`

jdbc操作数据库中遇到ResultSet关闭的问题

阅读更多
   以前的一个项目用jdbc操作数据库,事务方面未做好。最近出现了许多问题,所以对它进行修改。
   只好采用最原始的connection.setAutoCommit(false);来设置事务,由于业务逻辑过于复杂,这个方法写了381行。当中涉及到许多增删改查操作,其中用到了多个ResultSet。经过测试发现,当出现多个ResultSet时经常会报错说ResultSet已关闭。
   在网上查了一下,是由于一个Statement操作获得多个ResultSet时就会产生这种错误。这种情况下只需要多创建几个Statement,当需要多个ResultSet时分别用多个Statement执行就不会报错了。
   我只写了解决方法,至于为什么会这样,具体原因我也不太了解。
   查到的原因如下:
the  object  used  for  executing  a  static  sql  statement  and  returning  the  results  it  produces.     by  default,  only  one  resultset  object  per  statement  object  can  be  open  at  the  same  time.  therefore,  if  the  reading  of  one  resultset  object  is  interleaved  with  the  reading  of  another,  each  must  have  been  generated  by  different  statement  objects.  all  execution  methods  in  the  statement  interface  implicitly  close  a  statments  current  resultset  object  if  an  open  one  exists. 

原文地址:http://www.sudu.cn/info/html/edu/java/20071225/19718.html
分享到:
评论

相关推荐

    java组件开发(15) JDBC操作工具类与ResultSet数据

    java组件开发(15) JDBC操作工具类与ResultSet数据

    使用JDBC总结操作数据库

    1. 加载驱动Class.forName("oracle.jdbc.driver.OracleDriver");//相当于我们的第三方工具pl/sql 2. 通过驱动获取连接对象Connection con=DriverManager.getConnection(“jdbc:oracle:thin:@10.1.12.138:1521:orcl",...

    jdbc连接数据库getConnection 增、删、改、查

    SqlHelper.java连接数据库通用类... package org.jdbc.com.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql....

    jdbc操作数据库的基本流程详解

    所有的JDBC应用程序都具有下面的基本流程: 1、加载数据库驱动并建立到数据库的连接。 2、执行SQL语句。 3、处理结果。 4、从数据库断开连接释放资源。下面我们就来仔细看一看每一个步骤:其实按照上面所说每个...

    java数据库连接ResultSet

    java数据库连接ResultSet

    JSP通过JDBC访问数据库

    是一个最简单,也是学习jsp必须会的一个入门实验----通过jdbc连接数据库。 采用jsp+access数据库实现,同时使用javabean通过jdbc连接数据库。运行结果将显示从数据库查询出的图书。里面包含了javabean的源代码及解释...

    通过反射从数据库返回集合ResultSet中得到实体对象的list集合

    通过反射从数据库返回集合ResultSet中得到实体对象的list集合

    JDBC访问数据库的步骤

    JDBC访问数据库的步骤 1. 新建java项目:JDBC,新建 class文件:TestJDBC 2. JDBC用到的类库基本都位于java.sql.*包中,程序中引入该包: Import java.sql.*; 3. 添加要用的数据库中的包,找到数据库中的Driver....

    JDBC数据库常用操作封装(升级版)

    看前面的那一版注释,加了同步,线程安全,封装了jdbc常用操作,增删改查,查询ResultSet指定位置的记录,返回ResultSet每个列的名字,查询ResultSet中记录的行数...... 含源代码,测试代码!!!! 另附API说明,powerdesign图,...

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

    JDBC ResultSet 是一个表示数据库的数据表,通常通过执行查询数据库的语句产生该表。REF CURSOR 是 PL/SQL 中相应的类型。Java 存储过程的调用规范将 ResultSet 映射到 REF CURSOR。在 Oracle9i 之前,不可能从 Java...

    JDBC数据库常用操作封装

    封装了jdbc常用操作,增删改查,查询ResultSet指定位置的记录,返回ResultSet每个列的名字,查询ResultSet中记录的行数...... 含源代码,测试代码!!!! 另附API说明,powerdesign图,mysql/mssql数据库代码. 用户只需使用...

    jdbc操作文档,数据库基本操作文档集合

    // 对数据库进行查看操作时用executeQuery()返回ResultSet结果集。 ResultSet res = ste.executeQuery(); 5.处理结果 当是返回int型时 if(i > 0){ System.out.println("操作成功!"); } 当返回ResultSet型结果集...

    采用JDBC进行数据库分页查询

    一次只从数据库中查询最大maxCount条记录 * @param sql 传入的sql语句 * @param startNo 从哪一条记录开始 * @param maxCount 总共取多少条记录 */ public void getData(String sql,int startNo,int maxCount){ ...

    JDBC连接所有数据库步骤

    1 将数据库的JDBC驱动加载到classpath中,在基于JAVAEE的WEB应用实际开发过程中,通常要把目标数据库产品的JDBC驱动复制到WEB-INF/lib下. 2 加载JDBC驱动,并将其注册到DriverManager中。 3 建立数据库连接,取得...

    Java使用JDBC连接数据库.docx

    使用JDBC-ODBC桥驱动程序连接数据库 基本步骤: o(1)加载并注册数据库驱动 o(2)通过DriverManager获取数据库连接 o(3)通过Connection对象获取Statement对象 o(4)使用Statement接口执行SQL语句 o(5)操作...

    数据库结果集ResultSet判断为空记录数缺少一行和没有记录但永不为空问题

    最近在做毕业设计,需要用到数据库,在用结果集ResultSet判断的时候遇到一个郁闷的事情。 一开始我的想法是这么一个框架: ResultSet rs = dao.executeQuery(sql); if(rs不为空){ while(rs.next()){ … } }else{ … ...

    JDBC连接数据库

    JDBC连接数据库,里面有封装好的Connection、PreparedStatement、ResultSet,连接数据库和关闭这三种连接可以直接调用,简洁化!

    4. 尚硅谷_佟刚_JDBC_通过 ResultSet 执行查询操作.wmv

    JavaJDBC的视频,通过ResultSet执行查询操作,视频详细描述了如何使用ResultSet执行查询的案例。

    JDBC专题(二)-JDBC对数据库进行CRUD

    **java.sql** 以及 **javax.sql**的两个包下,以后同学们导包的时候要注意。 图中是几个核心类的关系。 ...- ResultSet:结果集,Statement执行完sql---select之后,会返回结果,结果给了ResultSet

Global site tag (gtag.js) - Google Analytics