`
xinglongbing
  • 浏览: 146594 次
  • 性别: 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.

分享到:
评论

相关推荐

    JDBC连接所有数据库步骤

    JDBC连接所有数据库步骤 1 将数据库的JDBC驱动加载到classpath中,在基于JAVAEE的WEB应用实际开发过程中,通常要把目标...7 依次将ResultSet、Statement、PreparedStatement、Connection对象关闭,释放所占用的资源。

    计算机程序设计(Java)-教案--单元十--数据库编程技术.docx.docx

    释放相关资源 booleanisClosed()throwsSQLException 查询此ResultSet对象是否已经被关闭 StatementgctStatcmcnt()throwsSQLException 获取生成此ResultSet对象的Statement对象 (4)数据库的查询和更新操作 Java数据库...

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

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

    Dbutils项目实例

    ColumnListHandler :将ResultSet中某一列的数据存成List List中存放的是Object对象 KeyedHandler :将ResultSet中存成映射 key为某一列对应为Map Map中存放的是数据 MapHandler :将ResultSet中第一行的数据存成Map...

    Java-JDBC【源码】JDBC概述、获取连接、SQL注入问题与解决、查询解析

    7.关闭连接 `ResultSet 、Statement 、Connection` 3.SQL注入问题与解决(Statement 、PreparedStatement) 3.1.模拟SQL注入 3.2.PreparedStatement解决 3.3.Statement 与 PreparedStatement 4.完整源码

    mysql-connector-java-5.1.46-bin

    3.创建statement对象 一个statement对象只能打开一个resultset,如果有两个  同样结果的结果集交叉访问,这两个结果集必定为  两个不同的statement对象所创建,如果在打开一个  新的结果集的时候存在一个已经打开的...

    数据库工具类DatabaseUtil.java

    // MySql 数据库要求必需关闭 statement 对象, 否则释放不掉资源 // - 此观点错误, 因为关闭此对象后有时数据无法读出 //statement.close(); return rs; } catch (Exception ex) { System.out.println("Error ...

    Java使用JDBC连接数据库.docx

    o(3)通过Connection对象获取Statement对象 o(4)使用Statement接口执行SQL语句 o(5)操作ResultSet结果集 o(6)关闭连接,释放资源 2.下面进行代码演示 1.注册数据库驱动程序的语法格式如下: DriverManager....

    使用JDBC总结操作数据库

    1. 加载驱动Class.forName("oracle.jdbc.driver.OracleDriver");//相当于我们的第三方工具pl/...命令对象执行语句ResultSet rs = st.executeQuery(sql);//注意 select 返回的是一个结果集 6. 关闭连接对象con.close();

    DruidJDBCUtils.java

    * 获取数据库连接对象 */ public static Connection getConnection() throws SQLException { return ds.getConnection(); } /** * 获取连接池方法 */ public static DataSource get...

    网上购物车 大三实验 今天刚做完

    System.out.println("关闭pstm对象失败!"); e.printStackTrace(); } try{ if(con!=null){ con.close(); } }catch(SQLException e){ System.out.println("关闭con对象失败!"); e....

    jsp+access实现的图书管理系统

    //关闭访问数据库的对象 } catch(SQLException e) { System.err.println("Date.executeQuery: " + e.getMessage()); } } public void closeConn() { try { conn.close(); //断开连接 ...

    jdbc基础和参考

    所以如果一旦连接关闭那么ResultSet将取不到值 5.处理结果 如果有结果集,处理结果集 ResultSet next(),每执行一次,向下移动一次,如果有值,返回true,如果没值返回false while(rs.next()){ rs.getType...

    JSP通过JDBC访问数据库

    //关闭访问数据库的对象 } catch(SQLException e) { System.err.println("Date.executeQuery: " + e.getMessage()); } } public void closeConn() { try { conn.close(); //断开连接 ...

    jdbc-demo:二进制详解系列(二)------ jdbc-mysql的使用和分析-mysql

    用于注册驱动,是获取Connection对象的入口Driver数据库驱动,用于获取Connection对象Connection数据库连接,用于获取Statement对象,管理事务Statement sql执行器,用于执行sql ResultSet结果集,用于封装和操作...

    jsp图书管理系统,一个很好的jsp图书管理系统网站,sql2000数据库

    一个很好的jsp图书管理系统, public class DB { private final String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_Blog";... System.out.println("关闭con对象失败!"); } } }

    Java+JSP成绩与课程管理升级(测试完成)

    数据库查询中,先把ResultSet转成List,里面放的是Map对象。Map的key为数据库字段的小写属性名称(colummName),value为属性的值。 4、系统不再依赖于服务器的端口及应用名:以前依赖应用名为test,端口为8080;该...

    韩顺平jdbc课件

    韩顺平jdbc Jdbc程序运行完后,切记要释放程序在运行过程中,创建的那些与数据库进行交互的对象,这些对象通常是ResultSet, Statement和Connection对象。 特别是Connection对象,它是非常稀有的资源,用完后必须...

    DButil.java

    * 关闭增、删、该数据库访问对象 * @param st 上下文对象 * @param conn 连接对象 */ static void closeConn(Statement st ,Connection conn){ try{ st.close(); conn.close(); }catch(Exception e){} } }

    Java连接sqlserver2005

    //获取连接对象 public static Connection getConn() { if (conn == null) { try { Class.forName(DRIVER); conn = DriverManager.getConnection(URL,"sa","sasa"); return conn; } catch ...

Global site tag (gtag.js) - Google Analytics