PreparedStatement使用两次,需要两次close()吗
例如
PreparedStatement pstmt = null;
sql=select * from user;
pstmt=connection.prepareStatement(sql);
pstmt.executeQuery();
psmt.close()//这里需不需要也关闭一次?
sql2=select * from titles;
pstmt=connection.prepareStatement(sql);
pstmt.executeQuery();
psmt.close()//这里关闭一次
PreparedStatement使用两次,需要两次close()吗,希望说说理由
------解决方案--------------------需要
因为执行一次产生一个游标,不关会游标累加。
------解决方案--------------------
差矣。connection才是连接,
PreparedStatement 是预编译sql的statement.
connection.prepareStatement(sql)只是创建一个 PreparedStatement 对象.调用2次,会创建2个对象
和Connection一样,如果不调用close方法,系统在垃圾回收的时候也会自动的给你关闭。
psmt.close()//这里需不需要也关闭一次?
我的建议是这里一定要关闭。调用它以后,会释放PreparedStatement 所占用的数据库和jdbc的资源。
你这种写法,本来就不正确。一个连接里面一般都是只做一次sql操作。要么就分开,重新开辟一个连接。
------解决方案--------------------不需要关闭2次。
首先纠正楼上的,pstmt是同一个对象,不会被垃圾回收。
其次,pstmt可以放在finally里面关闭。
哪怕抛出异常也可以关闭释放资源