1. 程式人生 > >Jasperreports6.3.1+Jaspersoft studio6.3.1進行報表開發實戰教程(八)-Mysql資料來源

Jasperreports6.3.1+Jaspersoft studio6.3.1進行報表開發實戰教程(八)-Mysql資料來源

實現Mysql資料庫連線報表模板輸出

前幾章介紹了以實體類作為報表資料來源進行輸出的案例,這一章講解現在常用的報表資料來源,那就是資料庫,以Mysql資料庫作為資料庫工具。

下載安裝Mysql與Mysql workbench

到官網下載資料庫Mysql,地址連結
下載好後,直接安裝。安裝過程中會設定root的密碼,一定要記住這個密碼,後面要用到。
這裡寫圖片描述
安裝完成後,再下載一個數據庫視覺化操作工具,MySql workbench,下載地址。
下載完成後,開啟workbench,新建一個叫sample的資料庫,裡面新建一個student的表,裡面隨便設定一些學生的成績資料。
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

建立學生成績資料表

sample資料庫建好之後,新建一個student表。
這裡寫圖片描述
這裡寫圖片描述
建立欄位,資料結構如下。
這裡寫圖片描述
輸入學生的各科成績與資訊
這裡寫圖片描述

在模板配置資料庫作為資料來源

建立一個數據源適配表
這裡寫圖片描述
選擇DATABASE JDBC Connection 這裡寫圖片描述
選擇驅動型別為Mysql
這裡寫圖片描述
輸入連線Mysql資料的賬號與密碼,root是剛才建立學生表資料的帳號。
這裡寫圖片描述
點選測試後,彈出錯誤對話方塊,說找不到這個驅動類。
這裡寫圖片描述
這是因為我們還沒設定資料庫連線驅動類的路徑。驅動類可以去官網下載,地址。
我前幾章提供的jar依賴包裡就有這個類,新增路徑依賴。
這裡寫圖片描述
新增後再點test,依然出了錯。這次是因為我們沒有設定時區,所以資料庫沒有辦法識別時間。
這裡寫圖片描述


只須將jdbc url:後面加一句時區即可

jdbc:mysql://localhost/sample?serverTimezone=GMT%2b8 

這裡寫圖片描述
這次再來test,結果successful,說明mysql資料庫成功連線上了。
這裡寫圖片描述
點選Finish,資料來源算配置好了。

將資料庫學生表字段配置到模組中

在outline中右鍵模板,選擇dataset and query
這裡寫圖片描述
選擇我們剛才建立的資料來源適配。
這裡寫圖片描述
這時可以看到localhost裡mysql所有的資料庫
這裡寫圖片描述
到這一步,如果想拖動欄位至右邊是無效果,右邊的那個框是用來寫查詢語句的,這是必不要少的。
這裡寫圖片描述
完成之後,可以在Field看到資料庫的欄位,接下來只要將它們拖動到對應的位置即可。
這裡寫圖片描述


檢視預覽,生成了五個表格,資料庫有幾條資料,對應就生成了幾個表格。
這裡寫圖片描述
這裡寫圖片描述

Java工程生成資料庫作為資料填充的報表

首先,自然是將我們的模板編譯成二進位制檔案,放入Java工程中。
這裡寫圖片描述
程式碼如下,附有詳細說明。這裡注意一點,模板並不提供資料庫的連線,模板檔案只提供了一條查詢語句而已,實際的查詢資料庫還是得在程式碼中完成的。

package test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.util.HashMap;

import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;

public class JasperMysqlDataTest {
    public static void main(String[] args) {

        try {
            // 1.設定模板二進位制檔案路徑,一定要可以通過該路徑找到該檔案
            String reportPath = "./src/JasperMysqlSample.jasper";

            // 2.建立一個map,裡面不放置任何資料,只是作為一個引數
            HashMap<String, Object> map = new HashMap<>();
            // 3.建立一個connection,作為填充引數傳入。
            // url,模板中連線的url,複製過來即可
            String url = "jdbc:mysql://localhost/sample?serverTimezone=GMT%2b8";
            // 我們的驅動類,要在依賴包中放置這個驅動包

            Class.forName("com.mysql.jdbc.Driver");
            // 關鍵的一步,建立一個連線物件,要設定賬號和密碼
            Connection conn = DriverManager.getConnection(url, "root", "password");
            // 4.通過JasperFillManager工具進行填充報表,填充成功後會生成一個JasperPring檔案,該檔案用於輸出
            JasperPrint jasperPrint = JasperFillManager.fillReport(reportPath, map, conn);
            // 5.設定目標檔案輸出的路徑
            String desFilePath = "./src/JasperMysqlTest.html";
            // 6.通過JasperExportManager管理工具進行報表輸出文件,此外設定為輸出html檔案
            JasperExportManager.exportReportToHtmlFile(jasperPrint, desFilePath);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            System.out.println("發生了錯誤");
            e.printStackTrace();
        }
    }
}

重新整理工程,生成了一個html檔案,預覽,與資料庫資料一致,大功告成。
這裡寫圖片描述
這裡寫圖片描述