我正在创建一个rptlibrary来与我公司的所有报告分享。 该库具有创建的oda数据源并与所有报告共享。我们希望从ReportEventAdapter.initialize()向数据库执行一些查询以从数据库中获取信息。我可以通过这种方式访问库中的数据源:
ReportDesignHandle rdh = (ReportDesignHandle)reportContext.getReportRunnable().getDesignHandle();
DesignSessionImpl ds = rdh.getModule().getSession();
String rsf = ds.getResourceFolder( );
LibraryHandle libhan = ds.openLibrary(rsf + "/my.rptlibrary" ).handle( );
DataSourceHandle datasource = libhan.findDataSource("myDS");
但是一旦我拥有数据源,就无法从数据源获得与数据库的连接。唯一的方法是使用数据源中的数据创建与数据库的经典JDBC连接?有没有办法使用更优雅的方法从java处理程序连接到数据库?就像使用池,重用连接等一样。
感谢。
答案 0 :(得分:0)
我们可以在报表脚本事件中迭代数据集值,因此如果使用JNDI URL定义数据集,查询可以利用连接池。
但是这很复杂。有一个完整的例子in this topic:在" getDefaultValueList"中定义的脚本。 report参数的event可以移动到报表中的任何位置,然后初始化一个全局变量。特别是我们可以将它移动到"初始化"事件,或者" beforeFactory"事件(在你的情况下" beforeFactory"可能是你想要的)。