JDBC 网关

阅读(5503) 标签: jdbc网关, sql, gateway属性,

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

在用JDBC模式调用集算器时,可以配置一个splx/spl/dfx脚本文件作为JDBC网关,在JDBC中执行的所有SQL语句都交由这个脚本处理执行。在网关脚本中通常需要读入SQL语句及使用的参数,并在脚本中处理数据库连接等操作,执行查询并返回结果,如下面的网关文件executeSQL.splx

 

A

B

1

=connect("demo")

 

2

if args==null || args.len()<2

>B1=A1.query(sql)

3

else

>B1=A1.query(sql,args(1),args(2))

4

>A1.close()

return B1

在这个脚本文件中,需要用到下面两个参数:

在网关文件中,上面的两个参数是必须的,前一个传入调用时传入的SQL语句,后一个传入执行SQL时传入的各个参数。在这里设定了最后一个参数为动态参数The last parameter is dynamic,使得sql中使用的参数可以作为序列传递给args

在使用JDBC网关时,需配置文件raqsoftConfig.xml<JDBC>节点中的<gateway>来指定网关文件,如需使用数据源,需要加载Runtime或者Server中的数据连接配置:

<JDBC>

<load>Runtime</load>

<gateway>executeSQL.splx</gateway>

</JDBC>

关于更多JDBC标签介绍可参考配置raqsoftConfig.xml小节。

配置后,在用Java调用集算器JDBC时,所执行的SQL都将交由网关文件处理,如:

//执行SQL?代表使用的参数

st =con.prepareCall("select * from CITIES where STATEID = ? and POPULATION > ?");

//设置参数

st.setObject(1, 5);

st.setObject(2, 400000);

//执行存储过程

st.execute();

//获取结果集

ResultSet rs1 = st.getResultSet();

//直接执行无参数的SQL得到结果集

ResultSet rs2 = con.createStatement().executeQuery("select STATEID,NAME,ABBR,CAPITAL from STATES where STATEID<8");

 

由于在网关文件中判断了未输入参数的情况,因此也可以执行无参数的SQL语句。查询结果rs1rs2输出后分别如下:

在这里,数据源的连接和关闭是在网关文件中处理的,如果使用默认连接的数据源,也可以用数据源名称直接执行查询,此时不必在使用结束后关闭数据库连接。

如果在JDBC中配置了远程服务器之后,那么使用网关文件时,与其它数据文件的情况是相同的:默认情况下执行计算时会优先使用本地文件,如果连接参数中设置了?onlyServer=true,则会使用服务器端的网关文件。