ireport入门教程之数据源介绍
1、ireport数据源偿跆火伙综述一个DataSource是Jasperreport获取数据以生成报表的源。这里有两种类型的DataSource:一种是JDBC Connection,用来从关系型数据库里取数据;另外一种是扩展了JRDataSource接口的java object,这种类型的对象允许我们去管理数据的细节,比如一个xml文件或一个javabean的集合。通过sql 查询从关系型数据库里取数据来填充生成报表是很简单的,iReport可以通过各个数据库厂商提供的JDBC Driver来获取连接生成要检索的field。如果我们不通过JDBC直接访问数据库来获得生成报表的字段与数据的时候,我们需要使用JRDataSource(全称JasperReport Data Source)。JRDataSource是一个接口,它允许我们访问具有行列结构的数据(在Datasource行我们叫records,列我们叫record fields)。不管是JDBC Connection还是JRDataSource,他们都不能通过JasperReport来创建,但是当应用程序调用生成报表的时候,我们可以通过JasperReports的fillReport方法传递一个打开的数据库连接(一个java.sql.Connection对象)或者是一个JRDataSource对象实例用于填充被调用的报表。对于传递一个java.sql.Connection对象的情形,JasperReports将在指定的报表里使用JDBC Connection来执行一个SQL查询,查询的结果将会被包含在一个JRResultSetDataSource对象里(JRResultSetDataSource也是一个JRDataSource对象的实例),这样JasperReports将使用一个JRDataSource对象来关联打印数据。
2、iReport中的数倌栗受绽据源iReport允许我们管理和配置不同类型的DataSources用来填充报表。这些DataSources被储存在iReport配置文件中当我们需要的时候即可以使用。我们可以使用的DataSources类型如下:- JDBC Connection- XML DataSource- JavaBean Collection DataSource- CSV DataSource- Custom DataSource- JRDataSourceProvider- Hibernate DataSource打开状态的JDBC Connection在报表生成的时候会被直接传递到JasperReport中。XML DataSource允许我们从XML文档里获取数据用来填充报表。一个CSV DataSource允许我们打开一个CSV文件来填充报表。JavaBean Collection DataSource,Custom DataSource和JRDataSourceProvider他们允许我们一个写好的java类来获取数据。Hibernate DataSource定义了一个执行HQL语言的方法。DataSource的管理我们可以通过在主菜单“Data Connections/DataSources”(图10.1)打开配置管理DataSource窗口界面。

4、同时你也可以从主菜单里的“DataàSet the active connection”在弹出的窗口中选择一个DataSource并设置其为“active”状态。

6、JDBC连接一个JDBC Connection允许我们从一个关系型数据库里直接获取数据(需要有一个JDBC Driver)。要添加一个新的JDBC Connection,可以点击“New”按钮打开创建新连接的管理窗口。

8、点击“test”按钮,对JDBC连接做测试。完成新建JDBC Connection之后,别忘了在管理窗口中设置Connection的“active”状态。


13、2.JDBC连接与JNDI连接的区别· JDBC连接数据库JDBC(Java Data Base Connectivity,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,下面介绍JDBC连接数据库的方法。
14、· JNDI连接数据库JNDI(Java Naming and Directory Interface)是一个应用程序设计的API,为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口,类似JDBC都是构建在抽象层上。
15、· JDBC 和JNDI连接数据库哪个更有优势使用JNDI连接某个数据源,如名为test,该数据源的所连接的数据库都在应用服务器端定义。因此JNDI连接数据源不需要关心具体的数据字羿岚寺库后台是什么?JDBC驱动程序是什么?JDBC URL格式是什么?访问数据库的用户名和口令是什么?甚至没有数据库连接池或连接管理。而是把这些问题交给J2EE容器来配置和管理,只需要对这些配置和管理进行引用即可。在报表部署后,如果数据库的相关参数变更,只需要重新修改配置文件中的JDBC参数,只要保证数据源的名称不变,那么数据连接就无需修改。由此可见,JNDI避免了报表与数据库之间的紧耦合,和项目共用服务器的连接池,使应用更加易于配置、易于部署。JDBC就是直接连接物理数据库,连接数据库比较快,但在程序中使用的话就比较烦琐,每次连接都要有一定的编码,和数据库的连接需要手动关闭。
16、2.1 JDBC连接数据库示例我们以连接Oracle数据库为例介绍JDBC方式连接一个数据库的操作步骤。· 新建数据库,选择JDBC方式连接

18、· 连接池属性点击连接池属性可设置该JDBC数据连接的连接池配置,详细请查看JDBC连接池属性,这里使用默认设置,一般性都是用默认设置。
19、· 输入用户名、密码,测试连接输入Oracle数据库用户名与密码,点击左上方的测试连接,提示成功,数据库连接便定义好了。其他数据库连接步骤相同。注:测试连接成功并不是说已经可以正确地获取到数据库的数据,测试的只是网络连接。



21、注:在进行数据连接的时候要注意驱动器支持的数据库版本,如果选择的数据库版本不在上述表格中,那么就需要更换驱动器。
22、· 示例使用oracle数据库的时候,没有使用上述表格中所说的版本,而是oracle7.2.3,那么需要把oracle7中jdbc/lib目录下的classes12.jar放进FR的WEB-INF/lib中,同时删除ojdbc14.jar。相当于换了一个oracle驱动。