润乾报表v5从数据库大字段取数
2017-08-17 09:50
232 查看
数据库表字段中有存储数据量较大的大字段类型,如oralce中的blob,结合特殊的业务需要,可能要拿到报表单元格或其他地方使用。
作为Oracle的blob字段,java中要用rs.getBlob()形式,但是如果直接将该结果返回到报表单元格中,会是一个blob对象,并不是真正里边存储的数据值,所以要经过特殊转换才能被报表工具识别。
本文将介绍润乾报表自定义函数实现对大字段的读取(主要体现在自定义函数的写法,自定义函数配置可参考开发教程)。
如下代码所示:
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.*;
importcom.raqsoft.report.model.expression.Expression;
importcom.raqsoft.report.model.expression.Function;
importcom.raqsoft.report.model.expression.Variant2;
importcom.raqsoft.report.resources.EngineMessage;
import com.raqsoft.report.usermodel.Context;
public class getparam extends Function {
public Object calculate(Context arg0) {
String param=“”;
Statement pstmt = null;
ResultSet rs = null;
oracle.sql.BLOB blob=null;
String id=result1.toString();
Connection con = null;
try {
con =arg0.getConnectionFactory(arg0.getDefDataSourceName()).getConnection();
} catch (Exception e1) {
// TODO 自动生成 catch 块
e1.printStackTrace();
}
String query2=“select param from BD_RUNQIAN_DT where id=’”+id+“‘”;
try {
pstmt = con.prepareStatement(query2);
rs = pstmt.executeQuery(query2);
while(rs.next()){
blob = (oracle.sql.BLOB)rs.getBlob(“param”);
InputStream inStream = blob.getBinaryStream();
byte[] data=null;
data = new byte[(int)blob.length()];
inStream.read(data);
inStream.close();
param=new String(data);
}
rs.close();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
return param;
//===================================================================
}
}
作为Oracle的blob字段,java中要用rs.getBlob()形式,但是如果直接将该结果返回到报表单元格中,会是一个blob对象,并不是真正里边存储的数据值,所以要经过特殊转换才能被报表工具识别。
本文将介绍润乾报表自定义函数实现对大字段的读取(主要体现在自定义函数的写法,自定义函数配置可参考开发教程)。
如下代码所示:
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.*;
importcom.raqsoft.report.model.expression.Expression;
importcom.raqsoft.report.model.expression.Function;
importcom.raqsoft.report.model.expression.Variant2;
importcom.raqsoft.report.resources.EngineMessage;
import com.raqsoft.report.usermodel.Context;
public class getparam extends Function {
public Object calculate(Context arg0) {
String param=“”;
Statement pstmt = null;
ResultSet rs = null;
oracle.sql.BLOB blob=null;
String id=result1.toString();
Connection con = null;
try {
con =arg0.getConnectionFactory(arg0.getDefDataSourceName()).getConnection();
} catch (Exception e1) {
// TODO 自动生成 catch 块
e1.printStackTrace();
}
String query2=“select param from BD_RUNQIAN_DT where id=’”+id+“‘”;
try {
pstmt = con.prepareStatement(query2);
rs = pstmt.executeQuery(query2);
while(rs.next()){
blob = (oracle.sql.BLOB)rs.getBlob(“param”);
InputStream inStream = blob.getBinaryStream();
byte[] data=null;
data = new byte[(int)blob.length()];
inStream.read(data);
inStream.close();
param=new String(data);
}
rs.close();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
return param;
//===================================================================
}
}
相关文章推荐
- 润乾报表V5 对接sap hana数据库
- 润乾报表与DERBY数据库的创建连接详解
- 润乾V5 报表集成项目后工具栏不显示
- 润乾报表V5产品集成方式介绍
- 润乾报表v5示例说明如何基于echarts模板调整满足个性需求
- tomcat下展现润乾报表报错:数据集xxx中数据源xxx无数据库连接,且未定数据连接工厂
- 润乾报表v5调用sqlserver存储过程数据集接收报表参数为空值的判断注意事项
- 【润乾报表v5】用润乾报表实现竖排文字
- 润乾报表v5如何升级设计器的JDK版本
- 润乾V5手机报表说明文档
- 润乾报表 dql分析页面如何为字段设置编辑风格
- 润乾报表DQL组件如何为查询字段的检索条件设置编辑风格
- 润乾V5中设计的报表如何在V4中展现
- 润乾报表V5如何访问WEB_INF下的JSP展现
- 润乾报表直连数据库配置
- 【润乾报表V5】隐藏不需要显示的单元格
- 润乾报表V5模态窗口
- 润乾(报表展现)获取及处理(集算器)麦杰数据库数据
- 润乾报表reportconfig中配置数据库直连
- 润乾报表v5通过权限控制数据访问方案