iReport 筆記(四) 使用JDBC作為資料來源
4.1 定義報表
在本例中,我先使用JDBC資料庫連線方式,使用資料庫為MS SQL Server,列印示例資料庫Northwind中的Products.ProductName列表。
iReport預設提供了MySql和HSql的驅動,如果要使用其它的資料庫,需要將相應的jar包複製到iReport安裝目錄的lib子目錄中,例如,對於SQL Server,我使用微軟提供的驅動,將msbase.jar、mssqlserver.jar、msutil.jar這3個檔案複製到lib子目錄中。
啟動iReport,點選選單“Data”-“Connection/Data Sources”定義資料來源,在此我使用“Database JDBC Connection”,中間有關的配置項不再多說,各輸入框的具體含義請參考本人所寫的
如果只定義了一個數據源,它即為預設的活動資料來源,否則需要使用選單“Data”-“Set Active Connection”設定活動資料來源。
新建一個報表,在選單“Data”-“Report Query”中設定該報表用到的SQL,我設為
select productname from products
報表的佈局與上例相同。
4.2 測試報表
定義完報表後,使用選單“Build”-“Compile”進行編譯,如果一切正常的話,則編譯成功,編譯後生成.jasper檔案,可在專案中進行程式設計使用。選擇測試方式為“Build”-“JRViewer Preview”,然後點選選單“Execute (With active connection)”,即可檢視測試結果,如下圖所示:
還可以使用其它的測試方式,會在當前目錄下生成相應的檔案,例如,我的報表檔案為report1.jasper,選擇PDF測試方式,則在當前目錄下生成report1.pdf。常用的方式為PDF方式,其它方式結果一般不盡如人意。
4.3 程式設計
將編譯生成的.jasper檔案置於程式包中下,例如lld.test.ireport,建立如下Servlet,即可根據.jasper檔案建立PDF報表
package lld.test.ireport;import java.io.*;
import java.sql.*;
import javax.servlet.ServletException;
import
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.*;
import net.sourceforge.jtds.jdbc.Driver;
publicclass FirstRepServlet extends HttpServlet
{
privatestaticfinallong serialVersionUID =685516851376141590L;
@Override
protectedvoid doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
this.doPost(req, resp);
}
@Override
protectedvoid doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
try
{
Class.forName("net.sourceforge.jtds.jdbc.Driver");
DriverManager.registerDriver(new Driver());
Connection connection = DriverManager.getConnection("jdbc:jtds:sqlserver://localhost:1433/NorthWind", "sa", "sa");
String root_path =this.getServletContext().getRealPath("/");
root_path = root_path.replace('/', '/');
File reportFile =new File(root_path +"/WEB-INF/classes/lld/test/ireport/report1.jasper");
System.out.println("find file "+ reportFile.getPath());
byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), null, connection);
System.out.println("create pdf file stream");
resp.setContentType("application/pdf");
// resp.setContentType("unknown");
// resp.addHeader("Content-Disposition", "attachment;filename="1.pdf"");
resp.setContentLength(bytes.length);
OutputStream os = resp.getOutputStream();
os.write(bytes, 0, bytes.length);
os.flush();
os.close();
System.out.println("close output stream.");
}catch (Exception e)
{
e.printStackTrace();
}
}
}
相關推薦
iReport 筆記(四) 使用JDBC作為資料來源
4.1 定義報表 在本例中,我先使用JDBC資料庫連線方式,使用資料庫為MS SQL Server,列印示例資料庫Northwind中的Products.ProductName列表。 iReport預設提供了MySql和HSql的驅動,如果要使用其它的資料庫,需要將相應的j
Jasperreports+jaspersoft studio學習教程(四)- JDBC嚮導作為資料來源填充資料
4.1 在studio工具中可以直接連線資料庫,利用sql語句檢索。建立資料庫,並建表 本教程使用mysql5.5+SQLyog工具,若沒有安裝,請百度自行安裝,建立DemoReport資料庫,並將user_tab表,注入資料如下: 4.2 在studio工具中新建
iReport學習二:javabean作為資料來源
在IReport中是Javabean作為資料來源 因為在專案中用到報表功能學習了這個Ireport做為報表設計,期初遇到很多問題,最後還是出來了初次研究 網上也看了很多文章雜七雜八 來點簡單的 關注重點一些基本操作就不在描述了 1、看看實體類 getXXX() setXX
Ireport使用子報表(使用JavaBean集合作為資料來源)
子報表在本例中,我使用子報表將生成如下樣式的報表 6.1 程式部分 第一步,建立與之相關的Bean類,如下所示: ProvinceBean.java package lld.test.ireport; import java.util.ArrayList; public c
如何輸出格式化的字符串(學習筆記四)
linux python 格式化整數 浮點數 如何輸出格式化的字符串(學習筆記四)我們經常會輸出類似 ‘親愛的xxx你好!你xx月的話費是xx,余額是xx‘ 之類的字符串,而xxx的內容都是根據變量變化的,所以,需要一種簡便的格式化字符串的方式。在Python中,采用的格式化方式和C語言是一致的,
cocos2d-x-3.1 國際化strings.xml解決亂碼問題 (coco2d-x 學習筆記四)
source ron 文件 亂碼問題 resource -s type fileutil ani 今天寫程序的時候發現輸出文字亂碼,盡管在實際開發中把字符串寫在代碼裏是不好的做法。可是有時候也是為了方便,遇到此問題第一時間在腦子裏面聯想到android下的strings
【Unity 3D】學習筆記四十二:粒子特效
空間 獲得 material package 一個 log 創建 spa mpi 粒子特效 粒子特效的原理是將若幹粒子無規則的組合在一起。來模擬火焰,爆炸。水滴,霧氣等效果。要使用粒子特效首先要創建,在hierarchy視圖中點擊create——particle s
Tomcat學習筆記(四)
客服 list illegal state oid () ons mov tom Servlet容器部分 servlet容器用來處理請求servlet資源,並為web客服端填充response對象模塊,在tomcat中,共有4種類型的容器,分別是:Engi
JavaWeb學習筆記四 request&response
cer 代碼 gbk msi 抓包工具 rom service net war HttpServletResponse 我們在創建Servlet時會覆蓋service()方法,或doGet()/doPost(),這些方法都有兩個參數,一個為代表請求的request和代表響
Swift 筆記 (四) —— 集合類型
move 變量 accep 混雜 isempty style nim 推斷 集合類 集合類型 Swift 提供了兩種集合類型, Array, Dictionary Array與Dictionary 都須要存同樣類型的數據 //實際測試的時候發現能夠混雜類型,以
hibernate筆記(四)
元素 有用 tro getc 如何 cond 屬性 war factor 目標: 一、hibernate查詢 二、hibernate對連接池的支持 三、二級緩存 一、hibernate查詢 1. 查詢概述 1) Get/load主鍵查詢 2) 對象導航查詢
java 核心學習筆記(四) 單例類
com null tools 初始化 equal inf div 特殊 對象 如果一個類始終只能創建一個實例,那麽這個類被稱作單例類。 一些特殊的應用場景可能會用到,為了保證只能創建一個實例,需要將構造方法用private修飾,不允許在類之外的其它地方創建類的實例。 又要保
Python學習筆記(四)
pop rem 通過 修改 排序 python語言 創建 eve () 一、list創建 list 是Python語言中一種內置的數據類型 list 中可以存放不同類型的數據 list = [] #創建一個空列表 list = [1,2,3] #創建一個非空列
vue筆記四
vuejs 動畫 將在 done 們的 觸發 city sca nim 十一.過渡與動畫 1.使用限制Vue 提供了 transition 的封裝組件,在下列情形中,可以給任何元素和組件添加 entering/leaving 過渡條件渲染 (使用 v-if)條件展示 (使用
Django開發筆記四
hrn log dom ive tin gist tle rand 忘記密碼 1、郵箱激活 users app下,models.py: class EmailVerifyRecord(models.Model): code = models.CharField(m
Java字符串整理筆記(四)
情況 lan gen 英文字母 元字符 電話 log util 查找 6. 使用正則表達式 正則表達式是一種描述字符串集的方法,是以字符串集合中各字符串的共有特征為依據的。在程序開發中,正則表達式被廣泛地應用在字符串的 查找、替換、匹配等情況下,因此靈活地使用正則表達
筆記四
訪問 轉發 跟蹤 htm 重新 quest tdi 別人 緩存 得到表單數據:1、String str = request.getParameter(String)//根據表單名得到表單值,如果是多個同名的鍵值,返回第一個值。2、String[] str= request.
spring學習筆記四:spring常用註解總結
bean logs single 配置文件 屬性註入 ring 如果 let ons 使用spring的註解,需要在配置文件中配置組件掃描器,用於在指定的包中掃描註解 <context:component-scan base-package="xxx.xxx.xxx
StackExchange.Redis學習筆記(四) 事務控制和Batch批量操作
成了 pan arp 展示 關於 public 連續 因此 用戶 Redis事物 Redis命令實現事務 Redis的事物包含在multi和exec(執行)或者discard(回滾)命令中 和sql事務不同的是,Redis調用Exec只是將所有的命令變成一個單元一起執行,期
Spring MVC筆記(四) 訪問靜態頁面
inpu web-inf bean ... 逗號 beans efi back 發送 本例通過<mvc:resources>標簽訪問一個靜態或動態頁面。 首先還是創建一個web工程,並引入相關jar包: 創建控制器類,WebController.java