Java / SQL:关闭()ResultSet / Statement / Connection是否必须?

时间:2017-01-09 19:06:38

标签: java mysql jdbc prepared-statement resultset

我必须编写一个Web Crawler(uni assign),因此我必须在MySQL数据库中存储/读取/更新大量数据。

我使用JDBC连接器,并且每次调用方法联系数据库 我定义了PreparedStatement&结果集,最后我关闭RS,最后关闭PS。

然而,我使用相同的方法这么多次,而不是使程序更多的时间/资源效率我使它更慢/更重(这就是为什么我也不关闭连接)。所以问题是还有其他理由要关闭它们还是应该让它们打开?

如果我不关闭它们,程序似乎没有任何问题,但我不希望它看起来是正确的,但真的是。

编辑:感谢关于如何关闭的想法,但问题不是如何但是"是强制性的#34;。关闭会使程序变慢,所以我需要知道我是否无法关闭(似乎是不好的做法)或者至少找到更好的替代方案

1 个答案:

答案 0 :(得分:2)

  • 在执行完成后,始终在本地(即在方法中)和PreparedStatement定义ResultSetclose是最佳做法。

  • PreparedStatement充当您的程序和数据库之间的游标,如果没有关闭,可能会导致maximum open cursors exceeded错误(在Oracle的情况下)作为游标数量/每个连接都可以打开可以打开的描述符。

  • 就结束ResultSet而言,关闭PreparedStatement会自动关闭ResultSethere是javadoc)。理想情况下,您应该使用try with resources块来实现。