报表应用如何避免数据库连接池信息暴露
报表应用中数据源通常是在配置文件中通过 jdbc 或 jndi 的方式进行配置,这种配置方式是明文的,如果连接信息只是数据库管理人员知晓,不想对其他人员公开,只想通过代码的方式提供连接信息,报表应用中要怎么实现数据源连接呢?
可以在 JAVA 获取到数据库连接信息,报表的数据集使用脚本数据集或集算器数据集,在数据集中直接通过 invoke() 调用 JAVA 代码取到数据库连接池的相应信息,然后在 connect 使用连接的驱动类和 url, 报表就可以在不配置数据库连接池的情况,与数据库建立连接。
下面以润乾报表的脚本版来做个实例看下。
代码中获取数据库连接信息,这里我在 JAVA 中直接将连接信息写成固定的字符串。
package example;
public class dateSource {
public static String[][] ds() {
String derive=“org.hsqldb.jdbcDriver”;
String url=“jdbc:hsqldb:hsql://localhost/demo”;
String user=“Sa”;
String password="";
String [][] dataset = {
{“derive”,“url”,“user”,“password”},
{derive,url,user,password},
};
returndataset;
}}
编译 dataSource.java 使用的 jdk 版本要与应用中使用的 jdk 版本相同,将编译好后的 dateSource.class 放到类路径的对应目录下,这里使用的是 1.8 版本的 jdk 编译的,放到设计器下自带 demo 应用的类路径下。
在浏览式报表 rpx 中使用这个数据源的时候,数据集类型选择脚本数据集或者是集算器数据集。这里我们使用脚本数据集,脚本的写法如下图所示。
A1:=invoke@x(example.dateSource.ds)
A2:=connect(A1(2)(1),A1(2)(2)+“?user=”+A1(2)(3))
A3:=A2.query(“select * from 员工表”)
A4:>A2.close()
A1 通过 invoke 调用 dataSource 类中的 ds 方法将结果返回成序列;
A2 中 connect 函数中获取 A1 序列中的成员作为连接的参数;
A3 使用 A2 的数据源连接进行数据库表查询;
A4 关闭数据库连接。
在设计器中未连接数据源的状态下,浏览数据集,可以浏览出数据。
如果应用中还用到了填报表,那么填报表的数据处理方式也需要是脚本或 dfx 文件,脚本中调用 JAVA 获取连接相关信息,作为 connect 的连接参数进行连接。
对润乾产品感兴趣的小伙伴,一定要知道软件还能这样卖哟性价比还不过瘾? 欢迎加入好多乾计划。
这里可以低价购买软件产品,让已经亲民的价格更加便宜!
这里可以销售产品获取佣金,赚满钱包成为土豪不再是梦!
这里还可以推荐分享抢红包,每次都是好几块钱的巨款哟!
来吧,现在就加入,拿起手机扫码,开始乾包之旅
嗯,还不太了解好多乾?