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)表

          主站蜘蛛池模板: 老河口市| 尼木县| 余干县| 乌兰县| 达尔| 通海县| 遂昌县| 巨野县| 昔阳县| 营口市| 忻城县| 信宜市| 攀枝花市| 永善县| 工布江达县| 临汾市| 年辖:市辖区| 南开区| 山丹县| 酒泉市| 霍州市| 佛坪县| 新田县| 乌拉特前旗| 繁峙县| 蓬溪县| 安图县| 麦盖提县| 连城县| 额济纳旗| 宜兰县| 光山县| 房产| 天峨县| 白河县| 山阴县| 牙克石市| 崇仁县| 大渡口区| 息烽县| 湖南省|