JDBC 网关

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

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

 

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

在这个dfx中,需要用到下面两个参数:

在网关文件中,上面的两个参数是必须的,前一个传入调用时传入的SQL语句,后一个传入执行SQL时传入的各个参数。

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

  <JDBC>

  <load>Runtime</load>

  <gateway>executeSQL.dfx</gateway>

  </JDBC>

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

  //调用存储过程,其中createTable2dfx的文件名,?代表使用的参数

  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输出后分别如下:

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