当Statement,ResultSet抛出错误之后,他是否会自动关闭?还是要手动关闭?
第一种写法
public void getit(Connection con,String id)throws Exception
{
String sql="select * from .. where id="+id;
Statement sm = conn.createStatement();
ResultSet rs = sm.executeQuery(sql);
if(rs.next){
System.out.print(rs.getString(2));
}
if(rs!=null)
rs.close();
rs=null;
if(sm!=null)
sm.close();
sm=null;
}
第二种写法
public void getit(Connection con,String id)throws Exception
{
Statement sm =null;
ResultSet rs=null;
String sql="select * from .. where id="+id;
try{
sm = conn.createStatement();
rs = sm.executeQuery(sql);
if(rs.next){
System.out.print(rs.getString(2));
}
}catch(Exception e){
throw new Exception(e);
}finally{
if(rs!=null)
rs.close();
rs=null;
if(sm!=null)
sm.close();
sm=null;
}
}
第二种写法比较安全,但是他会影响性能。
问题点数:50、回复次数:9Top
1 楼k3179(螃蟹)回复于 2006-03-14 09:49:22 得分 20
public void getit(Connection con,String id)
{
Statement sm =null;
ResultSet rs=null;
String sql="select * from .. where id="+id;
try{
sm = conn.createStatement();
rs = sm.executeQuery(sql);
if(rs.next){
System.out.print(rs.getString(2));
}
}catch(Exception e){
e.printStack();
}finally{
if(rs!=null)
rs.close();
rs=null;
if(sm!=null)
sm.close();
sm=null;
}
}
这么写不好吗Top
2 楼wuguix()回复于 2006-03-14 09:59:45 得分 0
当然了,如果你把错误不抛出来,调用你方法的程序怎么捕获异常?Top
3 楼wangx1949()回复于 2006-03-14 10:02:49 得分 10
第二种方法好,Statement,ResultSet如果不关闭,可能引起内存泄漏,这样麻烦更大.Top
4 楼wuguix()回复于 2006-03-14 10:30:24 得分 0
大家都来发表一下观点啊。Top
5 楼wuguix()回复于 2006-03-14 10:34:47 得分 0
mmTop
6 楼aylian(暂时没什么好用的,就用个空的好了!)回复于 2006-03-14 11:02:28 得分 10
第二种写法为JAVA的推荐写法,我觉得没什么问题,不知道楼主为什么说会影响性能?Top
7 楼yxxx(_小孬)回复于 2006-03-14 11:45:30 得分 10
楼主说会怎么影响性能?Top
8 楼wuguix()回复于 2006-03-15 15:27:17 得分 0
因为捕获错误再抛出会影响性能,
但是如果resultset 或者statement 自身在出现错误的时候能自行关系,那使用第一种写法更好。是不是?Top
9 楼wuguix()回复于 2006-03-15 15:28:20 得分 0
更正!
关系==关闭Top
相关问题
- ResultSet关闭的问题
- 使用utl_file包,关闭文件时抛出什么异常亚
- 如何在网页中自动关闭手动打开的窗口
- 手动关闭Word再次打开Word无法创建终结点错误
- 请问statement和resultset的关闭先后次序是否有规定,应该哪个先关闭?
- 关于ResultSet会自动关闭的问题
- 怎样使得ResultSet对象的结果集不关闭!
- connection , resultset , statement 关闭的时候顺序有关系么?
- 请教PB里执行批处理后自动关闭的问题(不能手动设置属性为“执行完关闭”)
- SOS,明天交货,28日走人。请问手动关闭excel后,再在程序里执行关闭操作的异常处理?




