`
xinglongbing
  • 浏览: 152336 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

ResultSet对象关闭

阅读更多

今天实验室一个同学利用同一个Statement对象调用executeQuery方法分别执行不同的SQL查询语句,结果第一次调用返回的ResultSet对象在后面不再可用,提示该对象已经关闭无法执行其他的操作。答案在JDBC4.0规范里面得到了解释:

A ResultSet object is explicitly closed when(ResultSet对象显示关闭的两种情况:)
■ The close method on the ResultSet is executed, thereby releasing any external resources
■ The Statement or Connection object that produced the ResultSet is explictly closed


A ResultSet object is implicitly closed when(隐式关闭的两种情况:)
■ The associated Statement object is re-executed(相关Statement对象重新执行了操作则上一次的ResultSet对象会隐式的关闭)
■ The ResultSet is created with a Holdability of CLOSE_CURSORS_AT_COMMIT and an implicit or explicit commit occurs


Note – Some JDBC driver implementations may also implicitly close the ResultSet when the ResultSet type is TYPE_FORWARD_ONLY and the next method of ResultSet returns false.
Once a ResultSet has been closed, any attempt to access any of its methods with the exception of the isClosed or close methods will result in a SQLException being thrown. ResultSetMetaData instances that were created by a ResultSet that has been closed are still accessible.138 JDBC 4.0 Specification • November 2006


Note – The closing of a ResultSet object does not close the Blob, Clob, NClob or SQLXML objects created by the ResultSet. Blob, Clob, NClob and SQLXML objects remain valid for at least the duration of the transation in which they are created, unless their free method is invoked.

分享到:
评论

相关推荐

    ResultSet

    当你执行SQL查询并从数据库获取数据时,结果会被封装在ResultSet对象中。在本篇文章中,我们将深入探讨ResultSet的主要概念、操作方法以及相关知识点。 1. ResultSet的创建:ResultSet对象是由Statement或...

    怎样实现关闭connection时自动关闭Statement和ResultSet (下篇)

    在Java的数据库编程中,管理数据库连接、Statement对象和ResultSet对象是至关重要的。这篇博客的下篇主要讨论了如何在关闭Connection时自动关闭Statement和ResultSet,以确保资源的有效释放,防止内存泄漏。以下是对...

    poi根据ResultSet到处Excle源码

    将ResultSet转换为Excel,首先需要创建一个HSSFWorkbook对象(对于.xls文件)或XSSFWorkbook对象(对于.xlsx文件),然后通过创建Sheet对象来创建Excel工作表。接着,遍历ResultSet,为每一行数据创建Row对象,并在...

    ResultSet用法集锦

    默认情况下,`ResultSet`关闭时,未提交的事务可能会被回滚。确保正确管理和提交事务以保持数据一致性。 6. `ResultSet`的类型: 有三种类型的`ResultSet`,它们定义了结果集的滚动行为: - `TYPE_FORWARD_ONLY`:...

    如何从 Java 存储过程将 JDBC ResultSet 作为 Ref Cursor 返回.doc

    为了从Java存储过程返回一个ResultSet作为REF CURSOR,需要特别处理JDBC的Connection对象。在创建Statement或PreparedStatement之前,需要调用Connection的setCreateStatementAsRefCursor(true)方法。这将确保任何...

    java 代码笔记 2010-06-23 对ResultSet()的几个常用操作,实例。

    在Java编程语言中,ResultSet是处理数据库查询结果的标准接口,它是Statement或PreparedStatement对象执行SQL查询后返回的结果集。本篇笔记将深入探讨2010年6月23日记录的一些关于ResultSet的常用操作,结合实例进行...

    描述Connection、Statement、ResultSet接口的作用

    标题和描述均聚焦于解释Java Database Connectivity (JDBC)中三个核心接口——`Connection`、`Statement`和`ResultSet`的作用。这三个接口是JDBC API的核心组成部分,它们共同协作,使得Java应用程序能够与各种关系...

    java对数据库操作常用对象及方法整合[归类].pdf

    Java 语言中经常使用的数据库操作对象和方法整合,主要包括 DatabaseMetaData、ResultSet、ResultSetMetaData 等对象。 DatabaseMetaData 对象 DatabaseMetaData 对象提供了关于整个数据库的信息,包括表名、表的...

    javaResultSet常用方法.pdf

    - 使用`ResultSet`时要注意资源管理,使用完后要关闭以释放数据库连接和内存资源,防止资源泄漏。 - 对于可更新的结果集,务必在执行更新操作后调用`updateRow()`来将更改保存到数据库。 掌握这些`ResultSet`的...

    连接数据库获取用户名密码等相关信息.doc

    通过 Connection 对象,可以执行 SQL 语句、获取结果集、关闭数据库连接等操作。在这个示例代码中,使用了 `DriverManager.getConnection()` 方法来获取 Connection 对象。 4. Statement 对象:Statement 对象是 ...

    jdbc增删改查基本操作的使用

    需要关闭 Connection 对象、Statement 对象和 ResultSet 对象,以避免资源泄露。 jdbc 程序中的用到的对象: * Connection:连接对象,连接数据库 * Statement:执行 SQL 语句的 Java 对象 * ResultSet:查询时...

    jdbc技术知识

    在完成数据库操作后,必须显式地关闭打开的资源,包括Connection、Statement和ResultSet对象。关闭这些资源主要是为了避免内存泄漏,因为打开的连接和查询结果集会占用系统资源。每个对象都有一个close()方法用于...

    java测试数据库连接关闭

    5. 处理结果:如果执行的是查询,可以获取ResultSet对象并遍历结果。 测试数据库连接关闭主要是为了防止资源泄漏。在完成数据库操作后,及时关闭连接是非常重要的。在Java中,我们可以使用try-with-resources语句,...

    删掉,复制别人东西,怕侵权,原本只想收藏的

    一:工作量比较大,需要连接,然后处理jdbc底层事务,处理数据类型,还需要操作Connection,Statement对象和ResultSet对象去拿数据并关闭他们。 二:我们对jdbc编程可能产生的异常进行捕捉处理并正确关闭资源 ...

    JDBC讲课流程.pdf

    结果集指针是指 ResultSet 对象中的指针,用于指向当前行的数据。默认状态下,游标只能向下移动。 getXXX 方法 getXXX 方法是用于从 ResultSet 对象中获取数据的方法。需要注意的是,getXXX 方法的数据类型要和表...

    基于Java-JDBC访问Oracle9i对象关系数据库的一种实现方法.pdf

    - 执行SQL语句,获取ResultSet对象(对于查询)或影响行数(对于更新)。 - 处理ResultSet,提取对象类型数据并转化为Java对象。 - 关闭资源,包括ResultSet、Statement和Connection。 6. **优化与性能**: ...

    JDBC常见易用的接口和类

    因此,如果读取一个 ResultSet 与读取另一个交叉,则这两个对象必须是由不同的 Statement 对象生成,如果存在某个语句打开的当前 ResultSet 对象,则 Statement 接口中所有执行方法都会隐式关闭它。 ...

    java_JDBC连接数据库代码大全

    * 需要关闭 Connection、Statement、ResultSet 等对象,避免资源浪费。 * 需要处理 SQLException,避免数据库操作出现异常。 通过了解 JDBC 的基础知识和常用接口,可以更好地使用 JDBC 连接数据库,提高开发效率和...

    jdbc学习文档

    - `executeQuery(String sql)`:执行查询语句,返回ResultSet对象。 - `executeUpdate(String sql)`:执行插入、更新或删除语句,返回受影响的行数。 - `execute(String sql)`:执行任意SQL语句,返回boolean值表示...

Global site tag (gtag.js) - Google Analytics