首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

PreparedStatement施用两次,需要两次close()吗

2013-09-06 
PreparedStatement使用两次,需要两次close()吗例如PreparedStatement pstmt nullsqlselect * from use

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()吗,希望说说理由
[解决办法]
需要

因为执行一次产生一个游标,不关会游标累加。


[解决办法]

引用:
关闭PreparedStatement 对象是让服务器好重新分配数据库连接,不让当前程序一直占用,而你下面接下来又进行了查询,所以不需要关闭。


差矣。connection才是连接,
PreparedStatement 是预编译sql的statement.
connection.prepareStatement(sql)只是创建一个 PreparedStatement 对象.调用2次,会创建2个对象
和Connection一样,如果不调用close方法,系统在垃圾回收的时候也会自动的给你关闭。


psmt.close()//这里需不需要也关闭一次?

我的建议是这里一定要关闭。调用它以后,会释放PreparedStatement 所占用的数据库和jdbc的资源。

你这种写法,本来就不正确。一个连接里面一般都是只做一次sql操作。要么就分开,重新开辟一个连接。


[解决办法]
不需要关闭2次。
首先纠正楼上的,pstmt是同一个对象,不会被垃圾回收。
其次,pstmt可以放在finally里面关闭。
哪怕抛出异常也可以关闭释放资源

热点排行