手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

填报教程之FineReport工具: 保存模板至数据库

时间:2024-10-19 07:02:47

1、如下可查看,这里是已经将已有的cpt模板保存于oracle数据库中,点击我们的报表数据集,数据库查询|数据库数据集,输入SELECT * FROM REPORT,预览可看到

填报教程之FineReport工具: 保存模板至数据库

2、那么,如何将cpt模板保存入库呢?以下我们详细介绍。

3、数据库表准备数据库中先建好一张report的表,表中包含两个字段 cptname(字符串型)和 cpt(Blob类型)。

4、编写保存模板程序package com.fr.demo; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement;import com.fr.base.Env;import com.fr.base.FRContext; public class SaveReportToDatabase { public static void main(String[] args) { SaveReport(); } private static void SaveReport() { try { // 连接数据库 String driver = "oracle.jdbc.driver.OracleDriver"; String url = "jdbc:oracle:thin:@192.168.100.169:1521:orcl10g"; String user = "temp"; String pass = "temp123"; Class.forName(driver); Connection conn = DriverManager.getConnection(url, user, pass); PreparedStatement presmt = conn .prepareStatement("insert into report values(?,?)"); // 读进需要保存入库的模板文件 Env oldEnv = FRContext.getCurrentEnv(); String envPath = oldEnv.getPath(); File cptfile = new File(envPath + "\\reportlets\\gettingstarted.cpt"); int lens = (int) cptfile.length(); InputStream ins = new FileInputStream(cptfile); // 将模板保存入库 presmt.setString(1, "gettingstarted.cpt"); // 第一个字段存放模板相对路径 presmt.setBinaryStream(2, ins, lens); // 第二个字段存放模板文件的二进制流 presmt.execute(); conn.commit(); presmt.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } } }

5、注:最新的代码链接。注:该程序中使用了JDBC连接数据库,您需要在编写代码前先将对应数据库的驱动包加载进project中。

6、编译运行运行该程序,重新查看数据库中数据,便可以看到您新增的记录了。

© 手抄报圈