类型:转载 责任编辑:asp.net 日期:2007/05/23
热门软件下载:
建立一个数据库连接的时候,通常是
Connection con = ....通过某种方式获得连接
try
{
.....进行相关数据库查询
}
catch (SQLException e)
{
....相关处理
}
finally
{
...关闭连接
}
问题就出在关闭连接哪,因为通常不希望 finally抛异常,但是con。close()又抛出异常
可不可以直接 con = null;
这根con。close();有什么区别?
con = null; 这种做法好吗?
迷糊中~~~~
ps: con = null;后会等着jvm来收回资源。con。colse();应该是自己主动释放资源吧。
网友回答:
通常是con.close。
学习。
应该是这样的
//<!-- 关闭数据库连接-->
public void close() {
try {
try{
if (rs != null) {
rs.close();
rs = null;
}
if (stmt != null) {
stmt.close();
stmt = null;
}
if (cstmt != null) {
cstmt.close();
cstmt = null;
}
if (dbc != null) {
dbc.close();
dbc = null;
}
} catch (SQLException ex) {
System.out.println("close error: " + ex.getMessage());
}
}
finally {
try {if (rs != null) rs.close();rs = null;} catch(Exception ex){};
try {if (stmt != null) stmt.close();stmt = null;} catch(Exception ex){};
try {if (cstmt != null) cstmt.close(); cstmt = null;} catch(Exception ex){};
try {if (dbc != null) dbc.close();dbc = null;} catch(Exception ex){};
}
}
finally总是会执行的,不可以直接用conn=null;要先执行close();方法
con=null,并没有关闭连接.
你应该这样:
try
{
.....进行相关数据库查询
}
catch (SQLException e)
{
....相关处理
}
finally
{
try
{
...关闭连接
}
catch (SQLException e)
{
....相关处理
}
}
con = null只是销毁了con这个Connection的引用,如果有别的Connection对象引用了连接对象那资源还是不能释放。con.close会销毁所有对这个连接对象的引用。
Plat(2004-04-13)
brucejia(大碗喝酒,大块吃肉)
说的很对,千万不能con=null,一定要con.close()
有过这样的经验教训!
conn.close();关闭连接,释放相关资源。
conn=null;这一句时多余的,这个临时变量退出了执行范围后自动消失。
和文件、socket通讯一样
最好使用close方法关闭连接
否则会有不可预知的后果
不可预知虽是书面用语,而且很多情况下没什么问题,但还是不要冒险的好
同意楼上的,在java中conn=null没有什么作用