vjame

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

          JasperReports學(xué)習(xí)筆記4-查詢數(shù)據(jù)庫生成動(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ù)庫的字段都是用$F{marks},而parameter是用$P{xxxx}表示的
          ,而parameter的值都是傳過去的那個(gè)HashMap里面設(shè)置的

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

          主站蜘蛛池模板: 剑河县| 乐东| 勐海县| 新竹市| 尚义县| 清水县| 平潭县| 叙永县| 绥德县| 都兰县| 瑞安市| 綦江县| 中方县| 麻江县| 太白县| 大足县| 淮滨县| 浦北县| 武夷山市| 灵丘县| 泽库县| 黄龙县| 铜鼓县| 塘沽区| 牟定县| 牙克石市| 遂昌县| 南丹县| 通州市| 白水县| 海伦市| 烟台市| 万盛区| 海兴县| 海门市| 东乡县| 平湖市| 安丘市| 拜泉县| 思南县| 读书|