Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javajdbc:Reply.fill()_Java_Jdbc_Db2 - Fatal编程技术网

javajdbc:Reply.fill()

javajdbc:Reply.fill(),java,jdbc,db2,Java,Jdbc,Db2,我有时会遇到以下异常: com.ibm.db2.jcc.b.gm:[jcc][t4][2030][11211][3.50.152]在连接的底层套接字、套接字输入流、, 或套接字输出流。错误位置:Reply.fill()。消息:连接重置。ERRORCODE=-4499,SQLSTATE=08001 问题是,代码成功执行了相当长的一段时间,然后突然出现了这个异常。但是,当我再次运行代码时,它会正常运行 有人能告诉我可能出了什么问题,并为我提供一些解决方法。您的连接似乎超时了。但我不知道问题出在哪里。

我有时会遇到以下异常:

com.ibm.db2.jcc.b.gm:[jcc][t4][2030][11211][3.50.152]在连接的底层套接字、套接字输入流、, 或套接字输出流。错误位置:Reply.fill()。消息:连接重置。ERRORCODE=-4499,SQLSTATE=08001

问题是,代码成功执行了相当长的一段时间,然后突然出现了这个异常。但是,当我再次运行代码时,它会正常运行


有人能告诉我可能出了什么问题,并为我提供一些解决方法。

您的连接似乎超时了。但我不知道问题出在哪里。它可能与数据库服务器的连接有关。很抱歉,我无法为您提供更多帮助,但我希望这能有所帮助。

这是未正确关闭/释放JDBC资源的迹象。您需要获取并在尽可能短的范围内关闭所有JDBC资源,也就是说,您需要在
try
块的
finally
块中以与获取它们相同的顺序关闭它们。例如

Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
    connection = database.getConnection();
    statement = connection.createStatement();
    resultSet = statement.executeQuery(SQL);
    // ...
} finally {
    if (resultSet != null) try { resultSet.close(); } catch (SQLException logOrIgnore) {}
    if (statement != null) try { statement.close(); } catch (SQLException logOrIgnore) {}
    if (connection != null) try { connection.close(); } catch (SQLException logOrIgnore) {}
}
如果您没有尽快正确地关闭它们,DB迟早会自己处理它,您的应用程序迟早会在遇到自己时崩溃


要提高连接性能,请使用连接池——您仍然需要以与上面相同的方式获取和关闭它们!现在只是连接池的实现在幕后担心是否真的关闭了连接。

我觉得这可能是由于

至少对我们来说是这样

检查db2diag.log中的
ZRC=0x8005006D=-2147155859=SQLE\u CA\u
“SQLCA已生成并保存在特定组件中
控制
当您遇到此类断开连接时,会阻止。“
错误消息


本周晚些时候,我们计划升级到DB2 9.7 FixPack 3a——如果有帮助,我们将回信。

我们最近也遇到了这个问题,这是由于混淆了and或子句以及and rownum<子句。将大括号放在正确的位置解决了这个问题。

希望Java 7中的try-with-resources块将来能帮助缓解一些问题。尽管我有一部分害怕让开发人员不清理资源而逍遥法外。我担心这会导致草率的发展。那么,如果这些开发人员必须处理JRE 7之前的代码,会发生什么呢?只是对你的回答大声思考。但是答案肯定是+。@Chris:ARM肯定会大大减少
close()
-in-
最后的
样板文件。然而,您也可以选择JPA,它反过来将整个JDBC样板文件简化为一个oneliner.interest。你知道关于JPA和纯JDBC的文章吗。我想我的经验是,抽象层有时会使我们的应用程序变得更糟糕,更难调试。我发现纯JDBC非常简单(至少在处理纯SQL字符串时是如此)。我可以看到它在哪里可以更好地处理对象。它为您处理资源关闭?没有想到。不过,通过一些基本的JPA教程,一定会有很好的见解。例如,和。是的,它可以透明地处理关闭(以及在EJB中执行此操作时使用
begin()
commit()
的事务性内容)。此帖子应该是评论,而不是回答。请同时参考此链接并