◆ 核心计算代码:
Context cxt = new Context(); //构建报表引擎计算环境
//.......................... //其它辅助代码,例如往报表引擎传递参数,传递数据库连接参数等,见后面的介绍
ReportDefine rd = (ReportDefine)ReportUtils.read( reportFile );
Engine engine = new Engine(rd, cxt); //构造报表引擎
IReport iReport = engine.calc(); //运算报表
◆ 参数传递:
ParamMetaData pmd = rd.getParamMetaData(); //从报表定义中取得参数元对象ParamMetaData
String paramOrMocrName = "";
if(pmd != null){
for(int i = 0, count = pmd.getParamCount(); i < count; i ++ ) { //讲究优化的写法
paramOrMocrName = pmd.getParam(i).getParamName(); //获取参数名
cxt.setParamValue(paramOrMocrName, request.getParameter(paramOrMocrName)); //设参数值
}}
◆添加JNDI的数据源配置
ReportServlet.addJNDIDsConfig("sqlsvr,sqlsvr,1,iso8859-1,GBK,0", "java:comp/env", true);
◆ 直接传递con,改变数据源连接:
//取得数据源
Connection connection = null;
try{
Driver driver = (Driver) Class.forName("org.hsqldb.jdbcDriver").newInstance();
DriverManager.registerDriver(driver);
con= DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/demo","sa","");
}catch (Exception e){
e.printStackTrace(); }
String defDsName = cxt.getDefDataSourceName ();
if (defDsName != null) cxt.setConnection(defDsName, con); //这样设定默认数据源
cxt.setConnection("dsName",con); //也可以直接指定某个已经的数据源,设置其con
◆ 指定另一个系统数据源名称,从而改变数据源连接
cxt.setDefDataSourceName("demo"); //改变缺省数据源名称
◆ 通过数据源工厂改变数据源连接
IConnectionFactory connFactory=......; //构造数据源工厂类,一般为自定义类
cxt.setConnectionFactory(sourceName,connFactory);
//其中connFactory这个类必须实现IConnectionFactory接口,并且实现他的public //java.sql.Connection getConnection() throws Exception 方法
◆ 直接传递数据库连接参数,改变数据源连接
DataSourceDefine dsoc=new DataSourceDefine();
dsoc.setDriver(......); //设置jdbc的驱动
dsoc.setCaseSentence(......); //设置sql的大小写是否无关,指表名字段名等
dsoc.setDSType(......); //设置数据源类型,如DataSource.TYPE_RELATIONAL, DataSource.TYPE_ODBC等
dsoc.setExtend(......); //设置数据库的扩展属性
dsoc.setName(......); //设置数据源名
dsoc.setPassword(......); //设置数据库连接密码
dsoc.setUser(......); //设置数据库访问用户名
dsoc.setUrl(......); //设置Jdbc的url
dsoc.setUseSchema(......); //设置是否使用模式
dsoc.setClientCharset(......); //设置客户端的字符集
dsoc.setDBCharset(......); //设置数据库的字符集
dsoc.setDBType(......); //设置数据库类型,如DBTypes.ORACLE, DBTypes.SQLSVR等
dsoc.setNeedTranContent(......); //设置数据库返回值是否需要转码
dsoc.setNeedTranSentence(......); //设置sql是否需要转码
cxt.setDataSourceConfig("jdbc/default", dsoc);
◆ 集算器数据源的连接
DBConfig dc=new DBConfig();
dc.setDriver(……); //设置jdbc的驱动
dc.setUrl(……); //设置Jdbc的url
dc.setUser(……); //设置数据库访问用户名
dc.setPassword(……); //设置数据库连接密码
dc.setUseSchema(……); //设置是否使用模式
dc.setInfo(……); //设置属性
dc.setCaseSentence(……); //设置sql的大小写是否无关,指表名字段名等
dc.setAddTilde(……); //设置是否使用代字号
dc.setExtend(……); //设置数据库的扩展属性
ISessionFactory SessFactory= new DBSessionFactory(dc);
Env.setDBSessionFactory(dsName, SessFactory); //设置数据源名称以及数据库连接工厂