vjame

          優(yōu)化代碼是無止境的
          隨筆 - 65, 文章 - 9, 評(píng)論 - 26, 引用 - 0
          數(shù)據(jù)加載中……

          JasperReports學(xué)習(xí)筆記4-查詢數(shù)據(jù)庫(kù)生成動(dòng)態(tài)的報(bào)表(WEB)


          第一種方式:

          sql語句中定義查詢條件,報(bào)表中定義接收參數(shù)


          第二種方式:

          JRXML文件里面不用寫SQL語句,而是將結(jié)果集查詢出來經(jīng)過JRResultSetDataSource轉(zhuǎn)換
           
           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對(duì)象里面了
          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文件里面數(shù)據(jù)庫(kù)的字段都是用$F{marks},而parameter是用$P{xxxx}表示的
          ,而parameter的值都是傳過去的那個(gè)HashMap里面設(shè)置的

          posted on 2013-10-15 15:52 lanjh 閱讀(571) 評(píng)論(0)  編輯  收藏 所屬分類: 報(bào)表

          主站蜘蛛池模板: 丰城市| 公主岭市| 麻城市| 乡城县| 图们市| 八宿县| 泽库县| 左权县| 墨脱县| 大方县| 阳信县| 临澧县| 康平县| 田阳县| 天峨县| 依安县| 梅州市| 沁水县| 潍坊市| 黔东| 晋江市| 青河县| 辽源市| 陆河县| 罗城| 西青区| 广宗县| 肥东县| 厦门市| 溆浦县| 陆川县| 沐川县| 康定县| 安宁市| 上林县| 莱西市| 顺义区| 炉霍县| 丰县| 崇信县| 湛江市|