一、概述
一个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查询,查询的结果将会被包含在一个JRResultSetDataSrouce对象里(JRResultDataSource也是一个JRDataSrouce对象的实例)这样JasperReports将使用一个JRDataSource对象来关联打印数据。
在本章节中,我们将阐述JRDataSource的不同类型和它们如何在iReport中使用,此外我们爱将看到如何对一个JRDataSource做扩展,通常通过一个扩展一个dataSource,可以克服JasperReports自身的一些局限性,比如在交叉报表中的使用。
二、iReport中的数据源
iReport允许我们管理和配置不同类型的DataSource用来填充报表,这些DataSource被存储在iReport配置文件中当我们需要的时候即可以使用。
我们可以使用的DataSource类型如下:
*JDBC Connection:打开状态的JDBC Connection在报表生成的时候会被直接传递到JasperReport中
*XML DataSource:XML DataSource 允许我们从XML文档里获取数据用来填充报表。
* JavaBean Collection DataSource
* CSV DataSource