描述:
通过集算器jdbc,在本地寻找程序文件执行,找不到则到服务器上找
语法:
dfx (…)
备注:
传入参数…调用需要执行的网格文件dfx,先在本地寻找相对寻址路径的网格文件执行,找不到则到服务器上找(服务器列表在dfxConfig.xml文件中配置),在集算器或服务器完成计算后,返回结果集拼成序列;多结果集的情况下,返回多个结果拼成的序列。dfx (…)可以视为call dfx(…)的简单写法,用st. executeQuery()执行,并返回结果集。
参数:
dfx |
网格文件,可带相对寻址路径或绝对路径 |
… |
参数,多参数时用逗号隔开,接收参数的参数名不会用到,而是按照参数的顺序来依次赋值。 |
示例:
C:\\test.dfx网格文件内容如下,StuId和Class为网格参数:
|
A |
1 |
=connect("demo") |
2 |
=A1.query("select * from SCORES where STUDENTID=? and CLASS=?",StuId,Class) |
3 |
=A2.sum(SCORE) |
4 |
>A1.close() |
5 |
return A3 |
测试代码如下:
public void testDataServer() {
Connection con = null;
java.sql.PreparedStatement st;
try{
Class.forName("com.esproc.jdbc.InternalDriver");
con= DriverManager.getConnection("jdbc:esproc:local://");
//调用存储过程,其中test是dfx的文件名
st =con.prepareCall("test ?,?");
//设置第一个参数
st.setObject(1,"4");
//设置第二个参数
st.setObject(2,"Class one");
//执行存储过程
st.execute();
//获取结果集
ResultSet set = st.getResultSet();
//打印结果
printRs(set);
//下面的语句和上面的调用方法效果相同
st =con.prepareCall("test 4,\"Class one\"");
st.execute();
set = st.getResultSet();
printRs(set);
}
catch(Exception e){
System.out.println(e);
}
finally{
//关闭连接
if (con!=null) {
try {
con.close();
}
catch(Exception e) {
System.out.println(e);
}
}
}
}