我已经返回Db2程序,它返回表之一的游标。
从我的java代码中调用此过程并修改以将游标作为结果集检索并具有流动的SQLexception异常日志,
com.ibm.db2.jcc.am.jo: [jcc][t4][10335][10366][4.7.85]
Invalid operation: Connection is closed. ERRORCODE=-4470, SQLSTATE=08003
at com.ibm.db2.jcc.am.dd.a(dd.java:666)
at com.ibm.db2.jcc.am.dd.a(dd.java:60)
我搜索了此异常的解决方案,并在ibm网站上发现了此解决方案link,建议更改日志配置,
增加日志文件大小以及主日志和辅助日志的数量 文件。 num_log_span值也可以调整。
这是程序示例,
CREATE OR REPLACE PROCEDURE ABC(c_dump OUT SYS_REFCURSOR) IS
BEGIN
open c_dump FOR
select feild1,feild1,.... from RSPNSE_TABLE;
END;
下面给出了Java代码,
public void callStoredProc(){
Connection dbConnection = null;
CallableStatement callableStatement = null;
ResultSet rs = null;
String proc = "{call ABC(?)}";
try {
dbConnection = connection;
callableStatement = dbConnection.prepareCall(proc);
callableStatement.registerOutParameter(1, DB2Types.CURSOR);
// execute getDBUSERCursor store procedure
callableStatement.executeUpdate();
// get cursor and cast it to ResultSet
rs = (ResultSet) callableStatement.getObject(1);
} catch (SQLException e) {
e.printStackTrace();
System.out.println(e.getMessage());
}
}
现在这个java代码在这一行callableStatement = dbConnection.prepareCall(proc);
注意:尽管异常日志包含“连接已关闭”文本我想提一下我已成功建立连接数据库正常检索使用JDBC没有问题
答案 0 :(得分:0)
准备调用失败表示您没有打开的连接。您将不得不深入研究SQLException并确定原因。