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

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、编译运行
运行该程序,重新查看数据库中数据,便可以看到您新增的记录了。