birt 从配置文件读取数据库信息

首先发点牢骚,不知道birt为什么这么设计,要新建jdbc数据源,然后填写一些连接数据库信息,之后你可以读取配置文件的信息。
我晕,我以为使用脚本数据源,折腾半天不显示结果,也没错误。鄙视一下birt这样设计,按说我读取配置文件还要先建个jdbc数据源干什么呢?
好了,牢骚发完了,看一下怎么写了。
首先设置配置文件db.properties,我这里为了方便直接放在c盘目录下了。
db.properties内容如下:
driver=net.sourceforge.jtds.jdbc.Driver
url=jdbc:jtds:sqlserver://localhost:1433/pubs
userid=sa
password=pass


我创建jdbc写的url连的数据库是northwind
在新建的数据源beforeopen里写:
importPackage( Packages.java.io );
importPackage( Packages.java.util );
fin = new java.io.FileInputStream("c:\\db.properties");
props = new java.util.Properties( );
props.load(fin);
this.setExtensionProperty("odaURL", props.getProperty("url"));
this.setExtensionProperty("odaDriverClass", props.getProperty("driver"));
this.setExtensionProperty("odaUser", props.getProperty("userid"));
this.setExtensionProperty("odaPassword", props.getProperty("password"));

fin.close();

然后新建数据集,sql 如下:
select * from jobs
(jobs表位于pubs下,而不是northwind下)。
预览显示数据,说明数据源应用了script里读取配置文件里连接的pubs数据库。

顺便说一下
如果是web应用的话,可能使用下面的操作:
importPackage( Packages.java.io,Packages.java.util,Packages.java.net );
//导入java类
importPackage( Packages.javax.servlet.http );
req = reportContext.getHttpServletRequest( );
//得到HttpServletRequest对象
propPath = new String("WEB-INF/db.Properties");
if ( propPath.charAt(0) != "/" )
  propPath = "/" + propPath;
url = req.getSession( ).getServletContext( ).getResource( propPath );
//得到相对路径下的URL
if ( url != null ) {    props = new java.util.Properties( );
//得到Properties对象
   props.load( url.openStream( ) );
// 从URL构建的输入流中读取属性列表(键和元素对)
extensionProperties.odaURL = new String(props.getProperty("url"));
//为birt数据源属性赋值  
extensionProperties.odaDriverClass = new String(props.getProperty("driver"));
extensionProperties.odaUser = new String(props.getProperty("userid"));
extensionProperties.odaPassword = new String(props.getProperty("password")); }

这是别人写的一个方法,但是要注意,这里的代码在设计器里运行是会出错的,因为req.getSession()这里req为null,
req是req = reportContext.getHttpServletRequest( );这里得来的,但是没有在web应用,没有请示,这里取得的request为空。

所以写好代码后应放到web容器里从页面请求测试。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值