6.2.1基本使用

集算器JDBC类似一个不带物理表的数据库JDBC驱动,可以把它简单的看成是一个只有存储过程的数据库。另外,集算器JDBC是个完全嵌入式计算引擎,已经在JDBC中完成了所有运算,不象数据库那样JDBC只是个接口,实际运算在独立的数据库服务器完成。

可参考6.3 JDBC部署 先完成程序的部署。

集算器JDBC使用的网格文件

与用call函数跨网格调用时类似,在集算器JDBC中使用的网格代码中,结果集需要通过return语句返回。如下面的网格文件createTable1.dfx

 

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的方法。

JAVA调用的基本方法

在调用集算器执行网格文件前,首先需要按下面步骤配置相关的信息:

1. 加载需要用到的jar包。在启动JAVA应用程序时需要的jar包(6.3 JDBC部署 中有jar包说明),如果在web应用下,可以把这些jar包放在WEB-INF/lib目录下

 

2. 部署raqsoftConfig.xml

raqsoftConfig.xml中包含了集算器的基本配置信息,如授权、寻址路径、主目录、数据源配置等,以及集算器的并发数等信息,日志文件信息以及连接池信息,它可以在集算器的[安装目录]\esProc\config路径下找到,其中存储的信息与集算器的选项页面中设定相同。在部署时可以先调整其中的配置。

注意:配置文件需复制后放置在应用项目的类路径下,但名称必须为raqsoftConfig.xml,不能改变。关于配置文件的具体解释,可以参考6.3JDBC部署

 

3. 部署dfx文件

将上面的createTable1.dfx放到应用项目的类路径下,也可以放到raqsoftConfig.xml文件的<dfxPathList/>节点指定的寻址路径,或者<mainPath/>指定的主路径中。

4. JAVA中调用dfx

public void testDataServer(){

  Connection con = null;

  java.sql.PreparedStatement st;

  try{

  //建立连接

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

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

  //调用存储过程,其中createTable1dfx的文件名

  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.dfx并将结果返回为ResultSet对象。在后续的程序中,简单将结果集中的数据输出。程序运行后,输出结果如下: