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

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,会影响资源释放吗?
...全文
133 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
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应该是这样的吧!!

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧