操作数据库结束后关闭Connection就可以了吗?
请问:用java操作数据库结束后关闭Connection就可以了吗?ResultSet和Statement等其他与数据库有关的东西用不用手工关闭?还是垃圾回收自动处理?谢谢! 问题点数:20、回复次数:8Top
1 楼kingswood(傲气中华)回复于 2005-05-23 22:21:44 得分 5
ResultSet 和 PreparedStatement等都要关,否则会占用数据库资源,这点很重要
最好是在finally里写,例如:
try{
}
catch{
}
finally{
try{
if(rst!=null){
rst.close();
rst = null;
}
if(pst!=null){
pst.close();
pst = null;
}
}
catch(SQLException){
...
}
}Top
2 楼mituzhishi(慎独)回复于 2005-05-24 08:56:36 得分 3
可以垃圾回收掉,
这是显然的,
不过你自己关掉也可Top
3 楼mingr6370(丑男)回复于 2005-05-25 03:22:08 得分 3
一般先关闭rs,之后ps,最后conn
不知各位还有什么好办法Top
4 楼youyiwuyi(有意无意)回复于 2005-05-26 10:35:13 得分 0
谢谢楼上3位!
不过3位的意见并不一致,是否说明仍然有一部分人和我一样对这个问题还有疑惑?conn.close()之后rs已经不可用了啊。
另外,close()之后还有必要 =null 吗?
望熟手解惑!Top
5 楼youyiwuyi(有意无意)回复于 2005-05-26 19:16:51 得分 0
没人多给一些意见吗?Top
6 楼daixin163()回复于 2005-05-26 19:27:53 得分 5
連接最好是在finally{}裡面關閉,不過,我看過日志文件,妳不關閉的話,容器也會為妳關閉
conn.close()之后rs已经不可用了啊--------這個問題不知樓主可否測試過,據我測試應該是可以用的,
只是ps關拉之後,rs不再可用
Top
7 楼kaleon(为人要厚道)回复于 2005-05-26 20:09:07 得分 4
conn数据库连接gb应该不会自动回收吧,它只是回收与内存有关的东西,conn还监听了数据库占用端口的啊。譬如类似于socket。
不过系统有一个默认的时间,如果不使用conn的话,它自动会关闭的。Top
8 楼youyiwuyi(有意无意)回复于 2005-05-27 09:57:19 得分 0
谢谢各位!
结贴.Top




