集算器JDBC的集成与使用方法

集算器JDBC 类似一个不完整的数据库JDBC驱动,它不带物理表,可将集算器视为只有存储过程的数据库(较强的计算能力,较弱的存储机制)。与使用数据库JDBC非常类似,可以像调用存储过程一样调用集算器程序。不同的是,集算器JDBC是个完全嵌入式计算引擎,所有运算都在这个嵌入包中完成,而不象数据库那样还有一个独立的服务器来实施计算。

1、加载驱动jar

集算器JDBC所需jar包括:dm.jar、poi-3.7-20101029.jar、log4j_128.jar、icu4j_3_4_5.jar、dom4j-1.6.1.jar,这5个jar包可以在集算器IDE安装目录的\esProc\ lib下获得。在启动 java 应用程序时加载上述jar包,如果在web应用下,可以把这些 jar包放在 WEB-INF/lib 目录下。

值得注意的是,集算器JDBC需要JDK1.6 或以上版本。

2、修改配置文件config.xml和dfxConfig.xml

准备config.xml文件,这个文件中包含了集算器的基本配置信息,如注册码、寻址路径、

主目录、数据源配置等,它可以在集算器安装目录的esProc\config路径下找到,在部署时可以先调整其中的配置(详细配置信息解释见附录)。

    配置授权信息

在config.xml文件里做如下配置:

< regCode>license</regCode>

其中license为授权码,目前集算器提供了免费的分发版供用户集成,免费授权码可在官网上直接获得。

将 config.xml及 dfxConfig.xml保存到应用项目的类路径下。

这里要注意的是,配置文件的名称必须为config.xml和dfxConfig.xml,不能改变。在配置数据库连接信息时,不能循环调用,不能将集算器JDBC本身作为数据源在配置中使用。

3、部署集算器程序

将事先编辑好的集算器脚本(dfx文件),放到应用项目的类路径下,也可以放到dfxConfig.xml文件的<paths/>节点指定的路径中。

4、Java调用集算器程序

由于集算器程序可以返回单一结果集,也可以返回多个结果集,这里分别来看一下。

4.1、单结果集

    集算器脚本

Java调用

public class CallSingleRS {

public voidtestDataServer(){

Connection con = null;

com.esproc.jdbc.InternalCStatement st;

try{

//建立连接

Class.forName("com.esproc.jdbc.InternalDriver");

con= (Connection) DriverManager.getConnection("jdbc:esproc:local://");

//调用存储过程,其中singleRs是dfx的文件名

st =(com.esproc.jdbc.InternalCStatement)con.prepareCall("call singleRs(?)");

//设置参数

st.setObject(1,"5");

//执行存储过程

st.execute();

//获取结果集

ResultSet rs = (ResultSet)st.getResultSet();

}

catch(Exception e){

System.out.println(e);

}

finally{

//关闭连接

if (con!=null) {

try {

con.close();

}

catch(Exception e) {

System.out.println(e);

}

}

}

}

}

4.2、多结果集

    集算器脚本

Java调用

这里给出主要代码,其他部分与上例相同。

//调用存储过程

st =( com.esproc.jdbc.InternalCStatement)con.prepareCall("call MutipleRs()");

//执行存储过程

boolean hasResult = st.execute();

//当存在返回的结果集时

if (hasResult) {

//获取多个结果集

ResultSet set = st.getResultSet();

int csize = set.getMetaData().getColumnCount();

//返回多个结果集时,返回 1 列多行的数据,csize为 1

while (set.next()) {

Object o = set.getObject(1);

//本例中,每次可读出1个序表,分别取出A2和A3中的序表

}

}

时间: 2024-08-05 11:11:03

集算器JDBC的集成与使用方法的相关文章

集算器与BIRT的集成过程

集算器提供了标准JDBC与报表工具集成,可以方便地与BIRT集成web端部署过程.下面就开发环境和WEB应用环境分别说明集成过程. 1. 开发环境下集成 1.1.创建配置文件 创建集算器JDBC必须的两个配置文件config.xml和dfxConfig.xml. 1.1.1. config.xml <?xml version="1.0"encoding="UTF-8"?> <Config Version="1"> <

集算器简化SQL式计算之组内运算

在开发数据库应用时,经常会遇到分组后针对组内数据的运算问题,如:列出近3年每年都发表过论文的学生名单,统计全部参加了历次培训的员工,选出每位客户的高尔夫成绩最高的三天等等.SQL完成这类运算较为复杂,一般需要嵌套多层,导致代码难以理解和维护.而集算器擅长表达这类组内计算,且很容易和JAVA或报表工具集成.下面用一个例子来说明. 根据数据库表SaleData统计出2013年中,每个月销售金额均排在前20名的客户名称.SalesData的部分数据如下: 想解决这个问题,需要选出2013年的销售数据,

集算器协助Java处理结构化文本之分组汇总

直接用Java实现文体文件分组汇总会有如下的麻烦: 1.文件不是数据库,不能用SQL访问.当分组.汇总表达式变化时,只能改写代码.而要实现灵活表达式的话,需要自己实现动态表达式解析和求值,编程工作量非常大. 2.遍历过程中记录分组结果,结果小了还可以存在内存中,如果分组结果太大时要将中间结果缓存进临时文件再归并,实现过程非常复杂. 使用集算器辅助Java编程,这些问题都有现成的类库可以解决.下面,我们通过例子来看一下具体作法. 文本文件employee.txt中保存有员工信息,我们要按照DEPT

集算器协助Java处理结构化文本之条件过滤

直接用Java实现文本文件中数据按条件过滤会有如下的麻烦: 1.文件不是数据库,不能用SQL访问.当过滤条件变化时需要改写代码.如果要实现象SQL那样灵活的条件过滤,则需要自己实现动态表达式解析和求值,编程工作量非常大. 2.文件太大时不能一次性装入内存处理,而采用逐步读入方式在考虑到性能时又会涉及到文件缓冲区管理.拆行计算等复杂编程. 使用集算器来辅助Java编程,这些问题都不需要自己写代码解决.下面我们通过例子来看一下具体作法. 文本文件employee.txt中保存了员工数据.我们要读取员

集算器用作Java结构化文件计算类库

有时我们不能使用数据库而采用文件系统存储数据,这时就需要自行完成基于文件的数据计算.但JAVA本身缺少相应的类库,需要硬编码才能实现结构化文件计算,代码复杂且可读性差.在网上有许多寻找用于文件计算的Java类库的问题,如: http://www.coderanch.com/t/561180/java/java/read-text-file-perform-operation http://stackoverflow.com/questions/9614112/how-to-sort-and-ar

集算器访问数据库的配置

集算器支持包括数据库在内的多种异构数据源.这里,我们通过例子来看一下集算器访问数据库的方法. 集算器可以连接数据库的jdbc驱动,也可以通过jdbc-odbc桥连接数据库.由于版权的原因,使用集算器的程序员需要自行准备数据库的jdbc或者odbc驱动.Jdbc驱动jar包准备好之后,需要放入集算器IDE安装目录的/common/jdbc中,例如:C:\Program Files (x86)\MicroInsight\common\jdbc目录中. 集算器集成开发环境的ODBC配置界面如下: 集算

用集算器实现跨数据库关联报表

实际应用中很多报表的数据来源于多个不同类型的数据库,报表数据源跨数据库是报表开发中的常态.目前实现这类跨库关联报表的方式有多种,但都会存在这样那样的问题. 使用报表工具自身多源关联功能 现在大多数主流报表工具都支持多数据源关联,这在某些方面确实为报表用户带来了便利.然而我们也经常会遇到通过报表自身的多源关联功能很难实现一些跨库关联的报表(由于数据结构和业务本身决定).这当然容易理解,报表工具主要是来做数据展现的,而对数据计算本身来说并不擅长. 即使有的能实现,在报表中做跨库关联计算的效率也较低,

用集算器实现报表的外置存储过程数据源效果

业务逻辑相对复杂的报表开发中,开发人员往往会使用存储过程为报表准备数据.而使用存储过程往往受到编写困难.执行效率低下.数据库操作权限限制等问题,着实让开发人员不爽.如何改进或替代存储过程,成了很多程序员的心心声. 本文通过一个例子说明如何使用集算器实现报表存储过程数据源效果. 报表样式 某网络平台需要监测查看一定周期内的用户状况,需要为运营部门出具日报.周报.月报.年报等报表,每类报表中均包含本期与上期.上上期数据比较,故涉及数据量较大.这里以其日报为例(月报年报只是统计周期不同),报表格式如下

集算器协助java处理多样性数据源之HDFS

Java通过Hadoop提供的API访问HDFS不算困难,但针对其上文件的计算就比较麻烦.比如分组.过滤.排序等计算,用java来实现都比较复杂.集算器esproc能很好地协助java解决计算问题,同时也封装了HDFS的访问,借助esproc可以让java加强HDFS上文件的计算能力,结构化半结构化数据计算都可以轻松完成.下面我们通过例子来看一下具体作法. HDFS中的文本文件employee.gz中保存了员工数据.我们要读取员工信息,从中找出1981年1月1日(含)之后出生的女员工.文本文件在