第一种:读配置文件
importPackage( Packages.java.io,Packages.java.util,Packages.java.net );
importPackage( Packages.javax.servlet.http );
req = reportContext.getHttpServletRequest( );
propPath = new String(params["propFile"].value); // 把配置文件名用参数传进来
if ( propPath.charAt(0) != "/" )
propPath = "/" + propPath;
url = req.getSession( ).getServletContext( ).getResource( propPath ); // 获得配置文件的相对路径
if ( url != null ) // 如果文件的相对路径不为空,则读取配置文件
{
props = new java.util.Properties( );
props.load( url.openStream( ) );
odaURL = new String(props.getProperty("url"));
odaDriverClass = new String(props.getProperty("driver"));
odaUser = new String(props.getProperty("userid"));
odaPassword = new String(props.getProperty("password"));
}
第二种:共用项目架构中的spring配置文件
importPackage(Packages.org.springframework.context.support); //引用Spring类
importPackage(Packages.org.apache.commons.dbcp); //应用Datasource类
var ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); //读取Spring配置文件
var dataSource = ctx.getBean("dataSourceName"); //读取DataSource
extensionProperties.odaURL = new String(dataSource.getUrl()); //读取Url并赋值
extensionProperties.odaUser = new String(dataSource.getUsername()); //读取Username并赋值
extensionProperties.odaPassword = new String(dataSource.getPassword()); //读取Password并赋值
第三种:为报表创建一个连接池,在报表中通过JNDI来获取连接信息(推荐采用这一种)
配置连接池(context.xml),配置的方法好像是tomcat版本不一样,方法也不一样,我是5.5
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Resource
auth="Container"
name="jdbc/birtDS"
type="javax.sql.DataSource"
maxIdle="5"
maxWait="-1"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
username="sa"
password="123"
url="jdbc:sqlserver://127.0.0.1:1433;databaseName=rcwss"
maxActive="10"/>
</Context>
然后在BIRT JDBC Data Source 中配置好JNDI URL , 我的是:java:comp/env/jdbc/birtDS
保存即可!
http://zongpin.iteye.com/blog/423097
碰上一些诸如在生成的report中点击链接更新数据库数据等,可以在dataset里面用以下代码,自己创建一个独立的statment来完成insert,update,delete等操作。
updateTxn = MXReportTxnProvider.create(this.getDataSource().getName());
updateStmt = updateTxn.createStatement();
updateStmt.setQuery("update table"
+ " set value = 'aaa'"
+ " where id = 1";
updateTxn.save();
updateTxn = null;
----------------
一些常用有用的sql 语句(用于oracle):
to_date(trunc(add_months(sysdate,-1),'MM'),'yyyy-mm-dd')
// 上个月的第一天
to_date(trunc(sysdate, 'MONTH')-1,'YYYYMMDD')
// 上个月的最后一天