集算器JDBC类似一个不带物理表的数据库JDBC驱动,可以把它简单的看成是一个只有存储过程的数据库。另外,集算器JDBC是个完全嵌入式计算引擎,已经在JDBC中完成了所有运算,不象数据库那样JDBC只是个接口,实际运算在独立的数据库服务器完成。
可参考JDBC部署 先完成程序的部署。
集算器JDBC使用的网格文件
与用call函数跨网格调用时类似,在集算器JDBC中使用的网格代码中,结果集需要通过return语句返回。如下面的网格文件createTable1.splx:
|
A |
B |
1 |
=create(ID,Amount) |
|
2 |
for 100 |
>A1.insert(0,#A2,rand(100*100)) |
3 |
return A1 |
|
这个网格中的计算比较简单:生成一个100条记录的序表,包含顺序设定的ID字段与随机生成的Amount字段。在A3中,用return语句将A1中的序表返回。
下面我们将使用这个网格文件,熟悉在JAVA中调用集算器JDBC的方法。
在调用集算器执行网格文件前,首先需要按下面步骤配置相关的信息:
1. 加载需要用到的jar包。在启动JAVA应用程序时需要的jar包(JDBC部署 中有jar包说明),如果在web应用下,可以把这些jar包放在WEB-INF/lib目录下
2. 部署raqsoftConfig.xml
在raqsoftConfig.xml中包含了集算器的基本配置信息,如寻址路径、主目录、数据源配置等,以及集算器的并发数等信息,日志文件信息以及连接池信息,它可以在集算器的[安装目录]\esProc\config路径下找到,其中存储的信息与集算器的选项页面中设定相同。在部署时可以先调整其中的配置。
注意:配置文件需复制后放置在应用项目的类路径下,但名称必须为raqsoftConfig.xml,不能改变。关于配置文件的具体解释,可以参考JDBC部署。
3. 部署脚本文件
将上面的createTable1.splx放到应用项目的类路径下,也可以放到raqsoftConfig.xml文件的<splPathList/>节点指定的寻址路径,或者<mainPath/>指定的主路径中。
4. 在JAVA中调用脚本文件
public void testDataServer(){
Connection con = null;
java.sql.CallableStatement st;
try{
//建立连接
Class.forName("com.esproc.jdbc.InternalDriver");
con= DriverManager.getConnection("jdbc:esproc:local://");
//调用存储过程,其中createTable1是脚本文件的文件名
st =con.prepareCall("call createTable1()");
//执行存储过程
st.execute();
//获取结果集
ResultSet rs = st.getResultSet();
//简单处理结果集,将结果集中的字段名与数据输出
ResultSetMetaData rsmd = rs.getMetaData();
int colCount = rsmd.getColumnCount();
for ( int c = 1; c <= colCount;c++) {
String title = rsmd.getColumnName(c);
if ( c > 1 ) {
System.out.print("\t");
}
else {
System.out.print("\n");
}
System.out.print(title);
}
while (rs.next()) {
for (int c = 1; c<= colCount; c++) {
if ( c > 1 ) {
System.out.print("\t");
}
else {
System.out.print("\n");
}
Object o = rs.getObject(c);
System.out.print(o.toString());
}
}
}
catch(Exception e){
System.out.println(e);
}
finally{
//关闭连接
if (con!=null) {
try {
con.close();
}
catch(Exception e) {
System.out.println(e);
}
}
}
}
在调用集算器文件时,用"call createTable1()"语句,即可运行网格文件createTable1.splx并将结果返回为ResultSet对象。在后续的程序中,简单将结果集中的数据输出。程序运行后,输出结果如下: