【发布时间】:2017-01-31 09:31:23
【问题描述】:
在 domino 服务器上,我有一个到 as400 系统的 odbc 连接。我可以在 as400 上运行程序并通过以下方式发送输入参数:
var sql:string ="CALL QSYS.QCMDEXC('SBMJOB CMD(CALL PGM(DEMO/TESTDEMO) PARM(ABCDEF)) ',0000000048.00000)";
ps = con.prepareCall(sql);
ps.execute();
很好,工作,但现在我想取回一些数据。 我认为我必须使用 callablestatement 来执行此操作,所以我尝试了:
var con:Connection = null;
var cs:CallableStatement = null;
try {
java.lang.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
var con:java.sql.Connection=java.sql.DriverManager.getConnection(url,usr,pwd);
sessionScope.error = sessionScope.error +"connection set /";
var sql:string ="CALL QSYS.QCMDEXC('CALL PGM(DEMO/TESTDEMO) (?,?))";
sessionScope.error = sessionScope.error +"sql set /";
cs = con.prepareCall (sql);
sessionScope.error = sessionScope.error +"cs set /";
cs.setString (1,'test');
sessionScope.error = sessionScope.error +"input param set /";
cs.registerOutParameter (2, Types.VARCHAR);
sessionScope.error = sessionScope.error +"output param set /";
cs.execute ();
sessionScope.error = sessionScope.error +"executed /";
var retour = cs.getInt (2);
sessionScope.error = sessionScope.error +"output /"+retour;
if (cs != null) {cs.close();sessionScope.error = sessionScope.error + "/ cs closed"}
if (con != null) {con.close();sessionScope.error = sessionScope.error + "/ con closed"}
}
catch (e){
sessionScope.error = sessionScope.error+"Sql error ="+e.toString();
if (cs != null) {cs.close();sessionScope.error = sessionScope.error + "/ cs closed"}
if (con != null) {con.close();sessionScope.error = sessionScope.error + "/ con closed"}
return;
}
运行时出现错误:
连接设置/sql设置/cs设置/Sql错误 =java.lang.NullPointerException/cs 关闭/con 关闭
所以问题在于设置输入参数。
【问题讨论】:
标签: java lotus-domino ibm-midrange db2-400