jdbc的con、pstmt、rs的非正常关闭顺序探讨

首先大家都知道,正常的关闭顺序都是ResultSet、PreparedStatement、Connection的顺序,这里就不作讨论了

Connection:与特定数据库的连接(会话)。

PreparedStatement:表示预编译的 SQL 语句的对象。SQL 语句被预编译并且存储在 PreparedStatement 对象中。然后可以使用此对象高效地多次执行该语句。

ResultSet:表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。


接下里说的是如果不关闭某一个对象的时候它的关闭状态会如何处理

按照jdbc接口要求, 这里作个总体概述:

关闭connection后,statement及resultset会自动关闭或者关闭statement后resultset会自动关闭

下面具体来说下上面这句话的意思:


在jdk文档中的Connection接口的close方法介绍::

close方法会立即释放此 Connection 对象的数据库和 JDBC 资源,而不是等待它们被自动释放。

注:Connection 对象在进行垃圾回收时被自动关闭。某些严重的错误也会关闭 Connection 对象

我想这里的jdbc资源和它们,就是connection statement resultset等资源


在jdk文档中的Statement接口的close方法介绍:

close方法会立即释放此 Statement 对象的数据库和 JDBC 资源,而不是等待该对象自动关闭时发生此操作。一般来说,使用完后立即释放资源是一个好习惯,

这样可以避免对数据库资源的占用。

注:Statement 对象在进行垃圾回收时被自动关闭。关闭 Statement 对象时,还将同时关闭其当前的 ResultSet 对象(如果有)。

这里Prapredstatement接口是继承statement接口的


ResultSet接口的close方法中介绍到:

close方法会立即释放此 ResultSet 对象的数据库和 JDBC 资源,而不是等待该对象自动关闭时发生此操作。

注:当生成 ResultSet 对象的 Statement 对象关闭、重新执行或用来从多个结果的序列检索下一个结果时,该 Statement 对象会自动关闭 ResultSet 对象。

垃圾回收 ResultSet 对象时它也会自动关闭


如上所述的“这里的等待该对象自动关闭”也就是等java的垃圾回收器进行gc回收



  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值