开发者使用JasperReport——查询数据库
来源:互联网 发布:js 字符串数组排序 编辑:程序博客网 时间:2024/06/05 09:48
前言
上一篇我们介绍了如何使用JasperReport来生成简单的文本报表,还有如何将报表输出到web页面上,今天我们继续讲解查询数据库的报表。
正题
跟上一篇一样,我们要生成报表需要以下几个步骤:
1.引入jar包,请看《静态文本报表》。
2.新建报表模版:
由于我们这次需要查询数据库(查询的是T_USER数据表),所以报表模版需要更改一下:
<?xmlversion="1.0" encoding="UTF-8"?>
<jasperReportxmlns="http://jasperreports.sourceforge.net/jasperreports"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreportshttp://jasperreports.sourceforge.net/xsd/jasperreport.xsd"
name="SecondReport">
<queryString>
<![CDATA[SELECT* FROM T_USER]]>
</queryString>
<fieldname="ID" class="java.lang.Integer"/>
<fieldname="NAME" class="java.lang.String"/>
<fieldname="SEX" class="java.lang.String"/>
<pageHeader>
<bandheight="30">
<staticText>
<reportElementx="0" y="0" width="69" height="24"/>
<textElementverticalAlignment="Bottom"/>
<text>Id</text>
</staticText>
<staticText>
<reportElementx="140" y="0" width="79" height="24"/>
<text>Name</text>
</staticText>
<staticText>
<reportElementx="280" y="0" width="69" height="24"/>
<text>Sex</text>
</staticText>
</band>
</pageHeader>
<detail>
<bandheight="30">
<textField>
<reportElementx="0" y="0" width="69" height="24"/>
<textFieldExpressionclass="java.lang.Integer">
$F{ID}
</textFieldExpression>
</textField>
<textField>
<reportElementx="140" y="0" width="69" height="24"/>
<textFieldExpressionclass="java.lang.String">
$F{NAME}
</textFieldExpression>
</textField>
<textField>
<reportElementx="280" y="0" width="69" height="24"/>
<textFieldExpressionclass="java.lang.String">
$F{SEX}
</textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
注:
1.<queryString>标签里面放置你的查询语句,到时候会直接执行。
2.<field>标签是与你的数据表的字段相对应的,还有数据类型。
3.<pageHeader>标签就是页面的标题,里面放置的都是字符串,所以使用<staticText>
4.<detail>标签是用来放置具体的查询记录的
5.<band>标签是比较灵活的,有点儿类似于div标签
6.<reportElement>是对于文本定位的,例如定位文本的位置和高度。
7.<textFieldExpression>是用来放置显示的字段的
3.编译报表模版,请看《静态文本报表》。
4.编写servlet:
由于我们需要查询数据库,所以我们需要在servlet中建立于数据库的连接:
packagecom.dan.servlet;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.PrintWriter;
importjava.io.StringWriter;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.util.HashMap;
importjavax.servlet.ServletException;
importjavax.servlet.ServletOutputStream;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importnet.sf.jasperreports.engine.JREmptyDataSource;
importnet.sf.jasperreports.engine.JRException;
importnet.sf.jasperreports.engine.JasperRunManager;
/**
* 查询数据库
* @author zdd
*
*/
publicclass DbReportServlet extends HttpServlet {
/**
*
*/
privatestatic final long serialVersionUID = 2174316885912562306L;
@Override
protectedvoid doGet(HttpServletRequest req, HttpServletResponse resp)
throwsServletException, IOException {
Connectionconnection;
resp.setContentType("application/pdf");
ServletOutputStreamservletOutputStream = resp.getOutputStream();
InputStreamreportStream =getServletConfig().getServletContext().getResourceAsStream("/WEB-INF/classes/reports/SecondReport.jasper");
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
connection=DriverManager.getConnection("jdbc:oracle:thin:@192.168.24.36:1521:testreport","test","test");
JasperRunManager.runReportToPdfStream(reportStream,servletOutputStream,newHashMap(),connection );
connection.close();
servletOutputStream.flush();
servletOutputStream.close();
}catch(Exceptione){
StringWriterstringWriter = new StringWriter();
PrintWriterprintWriter = new PrintWriter(stringWriter);
e.printStackTrace(printWriter);
resp.setContentType("text/plain");
resp.getOutputStream().print(stringWriter.toString());
}
}
}
5.配置web.xml,就是配置servlet
6.运行项目
看一下我的运行结果:
小结:
这些都是JasperReport简单的应用,我们知道了这些基本的用法后,就可以以后对其进行封装,后面还会讲解不同的数据源以及同时查询两张数据源的报表的应用。
- 开发者使用JasperReport——查询数据库
- 开发者使用JasperReport——带参数查询数据库
- 开发者使用JasperReport——简介
- 开发者使用JasperReport——静态文本报表
- 开发者使用JasperReport——报表输出到网页
- 开发者使用JasperReport——通过数据源生成报表
- 开发者使用JasperReport——不同数据源之Map数据源
- 开发者使用JasperReport——不同数据源之表格数据源
- 开发者使用JasperReport——不同数据源之自定义数据源
- 开发者使用JasperReport——不同数据源之实体对象数据源
- 开发者使用JasperReport——不同数据源之XML和CSV数据源
- JasperReport(2)——IReport使用数据源
- JasperReport(4)——使用一个BeanCollectionDataSource
- JasperReport 简单使用(数据库源为数据库)
- JasperReport(1)——IReport的简单使用
- MySQL数据库——使用子查询
- MySql数据库查询——使用聚合函数查询
- Laravel 数据库实例教程 —— 使用查询构建器实现对数据库的高级查询
- 《代码大全》学习笔记(2):利用隐喻对编程进行更深刻的理解
- 自定义实现Hadoop Key-Value
- 8、王爽《汇编语言》笔记_子程序一
- Yii: 如何在CGridView通过Ajax方式刷新数据后执行JS脚本
- SQL定义联合主键
- 开发者使用JasperReport——查询数据库
- powerDesigner15 导入PL/SQL表
- java设计模式之建造者模式
- 2243
- Linux内核最新的连续内存分配器(CMA)——避免预留大块内存
- 数据库逻辑设计E-R图转换为关系模型
- 5个人的3门成绩
- 一STL配置器(一)总体概述
- platform设备驱动全透析