2011-03-02 67 views
1

当我在日志中的错误尝试更新数据库时后:错误使用MySQL连接-J

值java.sql.SQLException:流 结果集空仍然有效。当任何 流结果集打开并且 在给定连接上使用时,可能会发出 语句。确保 在 尝试更多查询之前,在任何活动的 流结果集上调用了.close()。

我不明白null ResultSet是如何被激活的。它看起来像连接处于一个威胁状态。

+0

似乎解决方案是将 'clobberStreamingResults'设置为'true'进行连接。 – oshai 2011-10-28 00:05:54

回答

1

奇怪?不,看起来你没有关闭你的JDBC资源。

您应该在创建它们的方法范围内的finally块中关闭Connection,Statement和ResultSet。

更新数据库......结果集 开放和使用给定的连接上

您不能重复使用一个PreparedStatement,在一个点是一个SELECT和另一一个UPDATE之间没有关闭的。

+0

我想要做的是重复使用相同的语句。当我执行更新时,我不会收回结果集,但是有时我不能再次在相同的准备好的语句上工作。 – oshai 2011-03-02 12:34:53

+0

你不应该这样做。每次创建一个新的准备好的语句。非常糟糕的主意。 – duffymo 2011-03-02 12:40:54

+0

甚至java教程说我可以这样做:'使用带参数的SQL语句的优点是,您可以使用相同的语句,并在每次执行时使用不同的值。这个例子在下面的章节中。http://download.oracle.com/javase/tutorial/jdbc/basics/prepared.html为什么不呢? – oshai 2011-03-02 12:47:59