报表应用如何避免数据库连接池信息暴露

报表应用中数据源通常是在配置文件中通过 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 的连接参数进行连接。

以下是广告时间

对润乾产品感兴趣的小伙伴,一定要知道软件还能这样卖哟性价比还不过瘾? 欢迎加入好多乾计划。
这里可以低价购买软件产品,让已经亲民的价格更加便宜!
这里可以销售产品获取佣金,赚满钱包成为土豪不再是梦!
这里还可以推荐分享抢红包,每次都是好几块钱的巨款哟!
来吧,现在就加入,拿起手机扫码,开始乾包之旅



嗯,还不太了解好多乾?
猛戳这里
玩转好多乾