数据库连接rsstmt不关闭,只关闭conn会出现什么问题

数据库连接rsstmt不关闭,只关闭conn会出现什么问题,第1张

如果你不使用连接池,那么就没有什么问题,一旦Connection关闭,数据库物理连接就被释放,所有相关Java资源也可以被GC回收了。

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

明显没有关闭。因为这个ResultSet是新创建的。

不知道这个Jdbc工具类是你自己创建的还是用Apache的DbUtils,可以的话把你closeConn()方法的一段代码贴给我看。

我可以确定这个ResultSet是明显没有关闭的。

我的理解,显式的关闭会当即释放。

不加的话,不会当即释放。会在其生命周期终止的时候释放。但是他的生命周期什么时候终止,这个是由编译器或者解释器甚至池来决定的。

基于不同的游标类型,不显式关闭rs,可能会引发其他问题,所以我们建议要显式关闭,即写上rs.close(),和conn.Close.养成良好的代码习惯。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10806993.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存