集算器 JDBC

本节内容,非应用程序员可以跳过,不影响正常阅读。

集算器JDBC是将集算器作为一个嵌入式应用。在其他网络应用的程序中,使用类似JDBC的连接,就可以调用网格程序。在集算器JDBC中,网格程序被包装成存储过程,因此调用网格程序的方法与调用存储过程相同。

在集算器文件的网格代码中,结果集会通过return函数返回,如下面的test.splx

 

A

1

=connect("demo")

2

=A1.query("select * from EMPLOYEE where EID=?",arg1)

3

>A1.close()

4

return A2

在上面程序代码中,arg1是一个网格参数,在调用脚本文件时需对其赋值。运算结果是一个序表,通过return命令返回。在这里我们需要注意到的是,在JDBC调用的文件中,有可能需要连接其它的数据源,如本例中的"demo",这样的数据源同样需要配置参数,在集算器JDBC中配置数据源,需要在配置文件raqsoftConfig.xml中处理。

1. 数据源配置方法一,在raqsoftConfig.xml中直接配置数据库数据源连接参数:

<?xml version="1.0" encoding="UTF-8"?>

<Config Version="2">

<Runtime>

<!-- 数据源信息列表,加密级别-->

<DBList encryptLevel="0">

<!-- 数据源名称,必须与脚本文件中的数据源名称一致 -->

<DB name="demo">

<property name="url" value="jdbc:hsqldb:hsql://127.0.0.1/demo"/>

<property name="driver" value="org.hsqldb.jdbcDriver"/>

<property name="type" value="13"/>

<property name="user" value="sa"/>

<property name="password" value=""/>

<property name="batchSize" value="1000"/>

<!--

是否自动连接。如果设定为true,则可以直接使用db.query()函数来访问数据库;如果为false,则不会自动连接,使用前必须用connect(db)语句连接。

-->

<property name="autoConnect" value="true"/>

<property name="useSchema" value="false"/>

<property name="addTilde" value="false"/>

</DB>

</DBList >

</Runtime>

</Config>

2. 数据源配置方法二:在raqsoftConfig.xml中配置应用服务器连接池:

<?xml version="1.0" encoding="UTF-8"?>

<?xml version="1.0" encoding="UTF-8"?>

<Config Version="2">

<Runtime>

<DBList encryptLevel="0">

</DBList >

</Runtime>

<Server>

<!-- 默认数据连接,可以是DBList或下面JNDIList中的某一个 -->

<defDataSource>demo</defDataSource>

<!-- 设置JNDI数据源 –>

<JNDIList>

<JNDI name="jdbc/test">

//数据库类型编号,0-14依次代表的数据库类型为:[UNKNOWN:0; ORACLE:1; SQLSVR:2; SYBASE:3; SQLANY:4; INFMIX:5; FOXPRO:6; ACCESS:7; FOXBAS:8; DB2:9; MYSQL:10; KINGBASE:11; DERBY:12; HSQL:13; TERADATA:14;]

<property name="type" value="1"/>

<property name="batchSize" value="1000"/>

//引用数据库的JNDI数据源,格式为:java:comp/env/DataSource名称。通过JNDI名称找到DataSource,查找数据源时的环境串前缀,在不同的web服务器中不同,如Tomcat中是java:/comp/env,而WeblogicWebsphere中均不需要,可以不填。

服务器

Tomcat

Weblogic

Webshpere

Resin

Jboss

JNDIPrefix

java:comp/env

java:comp/env

Java:

 

<property name="lookup" value="java:comp/env/jdbc/test"/>

</JNDI>

</JNDIList >

</Server>

</Config>

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

在这里我们只讲述了集算器JDBC中数据源的配置,集算器JDBC具体的使用与配置方法,请参考JDBC

 

数据源配置完成后,即可在JAVA中调用前面的脚本文件:

public void testDataServer(){

Connection con = null;

java.sql.PreparedStatement st;

java.sql.Statement st2;

try{

//建立连接

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

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

//调用存储过程,其中testsplx/spl/dfx的文件名

st =con.prepareCall("call test(?)");

//设置参数

st.setObject(1,"3");

//下面的语句和上面的调用方法效果相同

st =con.prepareCall("call test(3)");

//执行存储过程

st.execute();

//获取结果集

ResultSet set = st.getResultSet();

 

//直接创建Statement

st2=con.createStatement();

//直接执行网格文件,与前面的call test(3)效果相同

set=st2.executeQuery("test 3");

//直接执行语句,指定数据源查询

set=st2.executeQuery("$(demo)select * from STUDENTS");

}

catch(Exception e){

System.out.println(e);

}

finally{

//关闭连接

if (con!=null) {

try {

con.close();

}

catch(Exception e) {

System.out.println(e);

}

}

}

}

上面的代码中,集算器 JDBC的连接串是"jdbc:esproc:local://",此时将使用默认配置文件中的设定;如果连接串中使用了...?config=...;即用指定的.xml文件中的配置,忽略raqsoftConfig.xml中的定义。

例如:con= DriverManager.getConnection("jdbc:esproc:local:/?config=myconfig.xml"); 则使用myconfig.xml中的配置。