birt 报表设计(10)—jdbc数据源

試著忘記壹切 提交于 2020-02-29 08:00:47

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





易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!