送分了,问个简单的问题!

flightingbird 2010-10-26 10:26:12
java jdbc访问数据时,通常采用resultset,statement,connection。

使用完之后,为释放资源,需要关闭。下面有两个问题:

1,关闭次序是 resultset.close();statement.close();connection.close(),是这样吗?

2,如果仅resultset.close();connection.close(),不关闭statement,会影响资源释放吗?
...全文
112 点赞 收藏 12
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Interet 2010-10-27
[Quote=引用 4 楼 ljw101827 的回复:]
一般是先打开的后关闭吧。。。
[/Quote]

同感
回复
yyy521fyy 2010-10-27
恩,不用连接池的话,先创建的后关闭。
回复
xuyang840117 2010-10-27
如果你不使用连接池,那么就没有什么问题,一旦Connection关闭,数据库物理连接就被释放,所有相关Java资源也可以被GC回收了。

但是如果你使用连接池,那么请注意,Connection关闭并不是物理关闭,只是归还连接池,所以PreparedStatement和ResultSet都被持有,并且实际占用相关的数据库的游标资源,在这种情况下,只要长期运行,往往就会报“游标超出数据库允许的最大值”的错误,导致程序无法正常访问数据库。


我是引用 robbin 的 参考
回复
麦田捕手 2010-10-27
MARK![Quote=引用 7 楼 fable0115 的回复:]
1,关闭次序是 resultset.close();statement.close();connection.close(),是这样吗?
答:是这样的,按照打开的倒序来关闭(后打开的先关闭)

2,如果仅resultset.close();connection.close(),不关闭statement,会影响资源释放吗?
答:正常情况下其实不会影响资源释放,但是如果关闭异常时,就关闭不掉了……
[/Quote]
回复
無_1024 2010-10-26
已经不简单了
回复
fable0115 2010-10-26
1,关闭次序是 resultset.close();statement.close();connection.close(),是这样吗?
答:是这样的,按照打开的倒序来关闭(后打开的先关闭)

2,如果仅resultset.close();connection.close(),不关闭statement,会影响资源释放吗?
答:正常情况下其实不会影响资源释放,但是如果关闭异常时,就关闭不掉了。
回复
voice1122 2010-10-26
[Quote=引用 4 楼 ljw101827 的回复:]
一般是先打开的后关闭吧。。。
[/Quote]
同意
回复
flightingbird 2010-10-26
有没有人有明确的答案呀!
回复
ljw101827 2010-10-26
一般是先打开的后关闭吧。。。
回复
renjianguokeivor 2010-10-26
我也想过这个问题
回复
小蝸牛 2010-10-26
一般的关闭是从小到大的statement resultset connection应该是这样的吧!!
回复
相关推荐
发帖
J2ME
创建于2007-09-28

1.3w+

社区成员

Java J2ME
申请成为版主
帖子事件
创建了帖子
2010-10-26 10:26
社区公告
暂无公告