我需要关闭“PreparedStatement”吗?

30

我有一个网站,点击量非常高,但是遇到了一些问题,包括JDBC连接错误。

我对关闭PreparedStatement有点困惑。我需要关闭PreparedStatement还是只关闭Statement就足够了?

还有,ResultSet呢?我也需要关闭它吗?


5
文档说了什么? - user554546
2
可能是重复问题:在Java中关闭数据库连接 - Paul Vargas
1
请在此展示您所询问的陈述。 - Abhishekkumar
2
由于官方教程关闭了PreparedStatements,我想可以安全地假设您必须关闭它们。 - fvu
2
你是在说关闭 Statement 还是 Connection?为什么关闭一个 Statement 会处理关闭一个无关的 PreparedStatement - Amir Pashazadeh
2个回答

27

是的,您必须关闭准备好的语句(PreparedStatement对象)和结果集,因为它们可能会导致内存泄漏。

有关更多信息,请参见使用准备好的语句


2
不,仅关闭“Connection”即可,它会关闭从中创建的所有“Statements”和“PreparedStatements”,以及从它们创建的“ResultSets”,但是如果您在每个连接中使用了大量的“PreparedStatements”和“ResultSets”,最好尽快关闭它们。您提供的链接中没有任何支持您的说法的内容。 - user207421

7

是的,你必须将其关闭。如果连接来自池,则关闭它实际上会将其发送回池以供重用。

finally{}块中关闭,以便如果抛出异常,您仍然有机会关闭它。


这不是与在语句对象上调用close而不是连接对象有关吗? - Luiz Henrique Martins Lins Rol

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接