1.创建一个报表项目pl_report ,然后创建一个报表report_1.rptdesign。并为其创建一个jdbc数据源
本例是使用sqlServer数据库,且连接驱动是使用jtds-1.3.1.jar。所以这里要加入jtds-1.3.1.jar包如:
记住最后将设计好的报表复制到 birt_runtime项目下时也要把jtds-1.3.1.jar加入项目中。设置好参数后就完成了数据源的创建了。
下面我们要为该数据源写脚本,让其从配置文件中读取连接参数。
1.在项目下创建jdbc连接配置文件:mssql_connect.properties。文件内容如下:
database.driver=net.sourceforge.jtds.jdbc.Driver
database.host=192.168.4.30
database.prot=3433
database.userName=test
database.password=test123
database.url=jdbc:jtds:sqlserver://192.168.4.30:3433/AqSc
2.选中刚才创建的数据源然后在设计界面中选择“脚本”选项目卡
我们将在beforeOpen面板中编写脚本,脚本内容如下:
importPackage(Packages.java.io);
importPackage(Packages.java.util);
fis = new FileInputStream("E:/WorkSpace/BirtReport/pl_report/mssql_connect.properties");
if(fis!=null){
props = new Properties();
props.load(fis);
}
this.setExtensionProperty('odaURL',props.getProperty("database.url"));
this.setExtensionProperty('odaDriverClass',props.getProperty("database.driver"));
this.setExtensionProperty('odaUser',props.getProperty("database.userName"));
this.setExtensionProperty('odaPassword',props.getProperty("database.password"));
if(fis!=null) fis.close();
这样当
report_1.rptdesign报表打开数据源时将执行这段代码,并完成连接参数的设置。可以看到脚本中配置文件的读取地址还是写死的,这样与不读取配置文件没什么两样。
下面我们将代码改进下:
importPackage(Packages.java.io);
importPackage(Packages.java.util);
importPackage(Packages.java.net);
importPackage(Packages.javax.servlet.http);
req = reportContext.getHttpServletRequest();
url = req.getSession().getServletContext().getResource("/pl_report/mssql_connect.properties");
props = new Properties();
props.load(url.openStream());
this.setExtensionProperty('odaURL',props.getProperty("database.url"));
this.setExtensionProperty('odaDriverClass',props.getProperty("database.driver"));
this.setExtensionProperty('odaUser',props.getProperty("database.userName"));
this.setExtensionProperty('odaPassword',props.getProperty("database.password"));
然后将pl_report直接复制到birt runtime下即可
最后运行该报表即可如:
http://localhost:8080/birt/frameset?__report=pl_report/report_1.rptdesign
来源:oschina
链接:https://my.oschina.net/u/2552286/blog/614715