小编典典

重用PreparedStatement

java

我在我们的代码库上运行了findbugs,它指出还有两个语句仍需要关闭。在代码的这一部分中,我们运行:

preparedStatement = connection.prepareStatement(query);

3个不同的查询,重用prepareStatement。在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);
   }

应该在下一个连接之前关闭该语句。prepareStatement(query); 还是这个findbug谨慎?


阅读 222

收藏
2020-11-19

共1个答案

小编典典

是的,在执行下一个connection.prepareStatement之前必须关闭该语句。否则,您将丢失对未关闭的前一个引用(即泄漏的语句)。在每个语句的使用处使用try
{} finally {}进行包装,并在finally中将其关闭。

2020-11-19