vjame

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

          JasperReports學習筆記4-查詢數(shù)據(jù)庫生成動態(tài)的報表(WEB)


          第一種方式:

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


          第二種方式:

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

          posted on 2013-10-15 15:52 lanjh 閱讀(573) 評論(0)  編輯  收藏 所屬分類: 報表

          主站蜘蛛池模板: 宜州市| 利津县| 徐闻县| 尼勒克县| 砚山县| 上栗县| 化州市| 衡阳市| 益阳市| 织金县| 汤原县| 凌海市| 余姚市| 大宁县| 依兰县| 临城县| 高雄市| 普宁市| 安化县| 台北县| 嘉鱼县| 营口市| 巴林左旗| 万源市| 防城港市| 本溪市| 长岭县| 大姚县| 花莲县| 尤溪县| 泸定县| 高雄县| 广宗县| 岳普湖县| 阳信县| 鹤山市| 城口县| 平远县| 岑溪市| 龙井市| 枣强县|