vjame

优化代码是无止境的
随笔 - 65, 文章 - 9, 评论 - 26, 引用 - 0
数据加载中……

JasperReports学习笔记4-查询数据库生成动态的报表(WEB)


第一种方式:

sql语句中定义查询条件,报表中定义接收参数


第二种方式:

JRXML文件里面不用写SQL语句,而是将结果集查询出来经过JRResultSetDataSource转换
 
 1 
 2 import java.io.IOException;
 3 import java.io.InputStream;
 4 import java.sql.Connection;
 5 import java.sql.DriverManager;
 6 import java.sql.ResultSet;
 7 import java.sql.SQLException;
 8 import java.sql.Statement;
 9 import java.util.HashMap;
10 
11 import javax.servlet.ServletException;
12 import javax.servlet.ServletOutputStream;
13 import javax.servlet.http.HttpServlet;
14 import javax.servlet.http.HttpServletRequest;
15 import javax.servlet.http.HttpServletResponse;
16 
17 import net.sf.jasperreports.engine.JRException;
18 import net.sf.jasperreports.engine.JRResultSetDataSource;
19 import net.sf.jasperreports.engine.JasperRunManager;
20 
21 public class DynamicCreateReportWithServletDateSource extends HttpServlet {
22 
23     private static final long serialVersionUID = 1L;
24 
25     public void doGet(HttpServletRequest request, HttpServletResponse response)
26             throws ServletException, IOException {
27         Connection connection = null;
28         Statement statument = null;
29         ResultSet resultSet = null;
30         String sql = "select tb.name as name,tb.age as age,tbs.marks as marks from jaspertb tb join jaspertbs tbs";
31         ServletOutputStream servletOutputStream = response.getOutputStream();
32         InputStream is = getServletConfig().getServletContext().getResourceAsStream("report\\JasperReportSQLResult.jasper");
33         try {
34             Class.forName("com.mysql.jdbc.Driver");
35             connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/jasperreportdb","root""root");
36             statument = connection.createStatement();
37             resultSet = statument.executeQuery(sql);
38             //这里把ResultSet封装到JRResultSetDataSource对象里面了
39             JasperRunManager.runReportToPdfStream(is,servletOutputStream,new HashMap(), new JRResultSetDataSource(resultSet));
40             response.setContentType("application/pdf");
41             servletOutputStream.flush();
42             servletOutputStream.close();
43             connection.close();
44         } catch (ClassNotFoundException e) {
45             e.printStackTrace();
46         } catch (SQLException e) {
47             e.printStackTrace();
48         } catch (JRException e) {
49             e.printStackTrace();
50         }
51     }
52 
53     public void doPost(HttpServletRequest request, HttpServletResponse response)
54             throws ServletException, IOException {
55         this.doGet(request, response);
56     }
57 
58 }


注意:JRXML文件里面数据库的字段都是用$F{marks},而parameter是用$P{xxxx}表示的
,而parameter的值都是传过去的那个HashMap里面设置的

posted on 2013-10-15 15:52 lanjh 阅读(542) 评论(0)  编辑  收藏 所属分类: 报表


只有注册用户登录后才能发表评论。


网站导航: