我在我们的代码库上运行了 findbugs,它指出还有两个语句需要关闭。在这部分代码中,我们运行:
preparedStatement = connection.prepareStatement(query);
对于 3 个不同的查询,重复使用 PreparedStatement。在 finally 块中,我们确实关闭了资源:
finally{
try{
if (resultSet != null)
resultSet.close();
} catch (Exception e) {
exceptionHandler.ignore(e);
}
try {
if (preparedStatement != null)
preparedStatement.close();
} catch(Exception e) {
exceptionHandler.ignore(e);
}
是否应该在下一个 connection.prepareStatement(query) 之前关闭该语句;或者这是 findbugs 谨慎吗?
最佳答案
是的,必须在执行下一个 connection.prepareStatement 之前关闭该语句。否则,您将失去对未关闭的前一个(又名泄漏语句)的引用。将 try {} finally {} 包裹在每个语句 use 周围,并在 finally 中将其关闭。
关于java - 重用 PreparedStatement,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1018123/