原文地址:http://www.tutorialspoint.com/jasper_reports/jasper_report_data_sources.htm
Datasources是一个结构化的数据容器。当要生成报表时,Jasperreport引擎从数据源获取数据。数据可以从数据库(databases)、XML文件(XML file)、对象数组、对象集合获取。在Filling Reports章节可以看到,fillReportXXX()方法需要接收一个数据源填充这个报表,比如net.sf.jasperreports.engine.JRDataSource对象或java.sql.Connection对象(当报表数据在相关的数据库中查找到)。

JRDataSource接口有两个需要实现的方法:

  1.public boolean next() throws JRException;

  尝试将光标定位到数据源的下一个位置

  2.public Object getFieldValue(JRField jrField) throws JRException;

  此方法提供了从当前数据源记录中获取报表的每个字段的值

Datasource Implementations

下表总结了数据源与他们的实现类

Datasource Implementation class
JDBC net.sf.jasperreports.engine.JRResultSetDataSource
JavaBean

net.sf.jasperreports.engine.data.JRBeanCollectionDataSource,

net.sf.jasperreports.engine.data.JRBeanArrayDataSource

Map-based

net.sf.jasperreports.engine.data.JRMapCollectionDataSource,

net.sf.jasperreports.engine.data.JRMapArrayDataSource

TableModel net.sf.jasperreports.engine.data.JRTableModelDataSource
XML net.sf.jasperreports.engine.data.JRXmlDataSource
CSV net.sf.jasperreports.engine.data.JRCSVDataSource
XLS

net.sf.jasperreports.engine.data.JRXlsDataSource

net.sf.jasperreports.engine.data.XlsDataSource

Empty net.sf.jasperreports.engine.data.JREmptyDataSource

JDBC data sources

  这是最常用的从相关数据库提取报表数据的方式。如果用java.sql.Connection来代替传递给引擎,它会在JRResultDataSource实例中执行相关查询并保存返回的java.sql.ResultSet对象。

JavaBean data sources

  类JRBeanArrayDataSourceJRBeanCollectionDataSource分别代表了实现包装数组或集合的JavaBean对象。数组或集合内的每个对象都被视为该类型数据源的一条记录。通过命名约定映射JavaBen属性与对应的报表字段之间的字段。报表字段的名称必须与JavaBean属性的名称相同(按指定的JavaBeans规范)。

Map-based data sources

  实现类JRMapArrayDataSourceJRMapCollectionDataSource使用时,必须是已经把报表数据以java.util.Map对象的形式保存在内存中。包装数组或集合中的每个Map对象可以被认为是数据源中的虚拟记录,并且每个报表字段的值是以报表字段的名称作为key提取的。

TableModel data sources

//此处省略

Empty data sources

JREmptyDataSource类模拟一个具有经定数的虚拟空记录的数据源。它用UI工具提供基本的报表预览功能,或者特殊的报表模板,或者用于测试或调试。

Rewindable Data Sources

  接口net.sf.jasperreports.engine.JRRewindableDataSource继承了JRDataSource接口。它增加了一个moveFirst()方法。这个方法的目的是把光标移动到数据源的第一条记录。

Rewindable数据源用于子报表band设置了isSplitAllowed="false"表明不允许分割,或者当前页面没有足够的空间给子报表进行渲染。

  上面所有的数据源都实现了JRRewindableDataSource,除了JRResultSetDataSource,因为它不支持回退记录指针。数据源传递一个手动包装的java.sql.ResultSet给子报表是有问题的。正确的处理方法是SQL查询在子报表模板内,因为在重启下一个页面的子报表时,引擎会再次执行。

Data Source Providers

JasperReport库有一个接口net.sf.jasperreports.engine.JRDataSourceProvider。它有助于数据源对象的创建与处理。当使用GUI工具创建一个报表模板时,需要使用自定义的报表数据源专用工具。JRDataSourceProvider是连通自定义数据源到设计工具的标准方法。此接口的自定义实现需实现数据源对象的创建与处理,并且如果可能列出数据源里可用的报表字段。

public boolean supportsGetFieldsOperation();

public JRField[] getFields(JasperReport report) throws JRException, UnsupportedOperationException;

public JRDataSource create(JasperReport report) throws JRException;

public void dispose(JRDataSource dataSource) throws JRException;

JasperReports教程:Report Data Sources的更多相关文章

  1. Spark SQL 之 Data Sources

    #Spark SQL 之 Data Sources 转载请注明出处:http://www.cnblogs.com/BYRans/ 数据源(Data Source) Spark SQL的DataFram ...

  2. Spark SQL External Data Sources JDBC官方实现写测试

    通过Spark SQL External Data Sources JDBC实现将RDD的数据写入到MySQL数据库中. jdbc.scala重要API介绍: /** * Save this RDD ...

  3. Spark SQL External Data Sources JDBC简易实现

    在spark1.2版本中最令我期待的功能是External Data Sources,通过该API可以直接将External Data Sources注册成一个临时表,该表可以和已经存在的表等通过sq ...

  4. 黄聪:Microsoft Enterprise Library 5.0 系列教程(五) Data Access Application Block

    原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(五) Data Access Application Block 企业库数据库访问模块通过抽象工厂模式,允许用户 ...

  5. 解决IDEA Springboot项目sql文件打开提示No data sources are configured to run this SQL and provide advanced的问题

    Idea2018的Springboot项目,如果里面有.sql文件,打开后,会提示"No data sources are configured to run this SQL and pr ...

  6. 警告: No data sources are configured to run this SQL and provide advanced code assistance. Disable this inspection via problem menu (Alt+Enter). more... (Ctrl+F1) SQL dialect is not configured. Postgr

    python3出现问题: 警告: No data sources are configured to run this SQL and provide advanced code assistance ...

  7. vue教程1-02 data里面存储数据

    vue教程1-02 data里面存储数据 <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  8. Weblogic多数据源(Multi Data Sources)应用实践

    原创 2012年03月29日 10:55:28 标签: weblogic / 数据库 / 负载均衡 / 数据中心 / jdbc / 应用服务器   大型系统在进行数据库部署时,常常会分为主数据应用中心 ...

  9. JasperReports教程

    JasperReports教程 Jasper报表是一个开源的Java报表引擎,是基于Java的,它没有自己的表达式语法. 由于JasperReports是一个Java类库,而不是针对最终用户,而是有针 ...

随机推荐

  1. 收集数据至泛型Dictionary

    开发时,我们经常使用到泛型,不管是List<T>,还是Dictionary<T,V>,下面Insus.NET在测试一些功能,当使用到一些临时数据集时,有好几种方法把数据收集至D ...

  2. .NET程序的编译和运行

    程序的编译和运行,总得来说大体是:首先写好的程序是源代码,然后编译器编译为本地机器语言,最后在本地操作系统运行. 下图为传统代码编译运行过程: .NET的编译和运行过程与之类似,首先编写好的源代码,然 ...

  3. js验证电话号码的正则表达式

    在做程序时遇到js验证电话号码的问题,使用正则表达式来操作很简单的.一起来看一下吧. 1,这种是比较简单的验证号码: 电话号码只能包含”(“.“)”.“-”和数字 <input   type=t ...

  4. 重新想象 Windows 8.1 Store Apps (90) - 通信的新特性: 通过 HttpBaseProtocolFilter 实现 http 请求的缓存控制,以及 cookie 读写; 自定义 HttpFilter; 其他

    [源码下载] 重新想象 Windows 8.1 Store Apps (90) - 通信的新特性: 通过 HttpBaseProtocolFilter 实现 http 请求的缓存控制,以及 cooki ...

  5. 模拟---LCR

    HDU  2778 Description LCR is a simple game for three or more players. Each player starts with three ...

  6. Android图像处理之Bitmap类

      Bitmap是Android系统中的图像处理的最重要类之一.用它可以获取图像文件信息,进行图像剪切.旋转.缩放等操作,并可以指定格式保存图像文件.本文从应用的角度,着重介绍怎么用Bitmap来实现 ...

  7. ASP.NET本质论第一章网站应用程序学习笔记1

    1.统一资源标示符 1) 格式:协议://主机[.端口号][绝对路径[?参数]],在Http://www.kencery.com/hyl/index/login中,http表示协议的名称,www.ke ...

  8. CSS3中的calc()

    什么是calc()? calc是英文单词calculate(计算)的缩写,是css3的一个新增的功能; MDN的解释为可以用在任何长度,数值,时间,角度,频率等处; /* property: calc ...

  9. javascript作用域链学习笔记

    作用域链 "JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里." --权威指南 在JavaScript中,一切皆对象,包括函数.函数对象和其它对象 ...

  10. 安卓开发_慕课网_ViewPager实现Tab(App主界面)

    学习内容来自“慕课网” 网站上一共有4种方法来实现APP主界面的TAB方法 这里学习第一种 ViewPager实现Tab 布局文件有7个, 主界面acitivity.layout <Linear ...