我必须编写一个Web Crawler(uni assign),因此我必须在MySQL数据库中存储/读取/更新大量数据。
我使用JDBC连接器,并且每次调用方法联系数据库 我定义了PreparedStatement&结果集,最后我关闭RS,最后关闭PS。
然而,我使用相同的方法这么多次,而不是使程序更多的时间/资源效率我使它更慢/更重(这就是为什么我也不关闭连接)。所以问题是还有其他理由要关闭它们还是应该让它们打开?
如果我不关闭它们,程序似乎没有任何问题,但我不希望它看起来是正确的,但真的是。
编辑:感谢关于如何关闭的想法,但问题不是如何但是"是强制性的#34;。关闭会使程序变慢,所以我需要知道我是否无法关闭(似乎是不好的做法)或者至少找到更好的替代方案。
答案 0 :(得分:2)
在执行完成后,始终在本地(即在方法中)和PreparedStatement
定义ResultSet
和close
是最佳做法。
PreparedStatement
充当您的程序和数据库之间的游标,如果没有关闭,可能会导致maximum open cursors exceeded
错误(在Oracle
的情况下)作为游标数量/每个连接都可以打开可以打开的描述符。
就结束ResultSet
而言,关闭PreparedStatement
会自动关闭ResultSet
(here是javadoc)。理想情况下,您应该使用try with resources块来实现。