最近发现项目中存在未关闭的PreparedStatement,看了下代码,情况是这样的:
我们在f1()方法中声明了PreparedStatement对象,但是由于该方法需要返回ResultSet对象所以在该方法中没有关闭PreparedStatement,当我们在另一个方法f2()中调用f1()的时候这么做:psmt = rs.getStatement();然后调用psmt.close();确发现PreparedStatement并没有关闭,这是什么原因呢?
我们在f1()方法中声明了PreparedStatement对象,但是由于该方法需要返回ResultSet对象所以在该方法中没有关闭PreparedStatement,当我们在另一个方法f2()中调用f1()的时候这么做:psmt = rs.getStatement();然后调用psmt.close();确发现PreparedStatement并没有关闭,这是什么原因呢?
开门 ->没有关
新开门(不用开,我要抛异常)->所以获得连接前判断一下 有没有开,如果开了就直接用