以前的一个项目用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数据
1. 加载驱动Class.forName("oracle.jdbc.driver.OracleDriver");//相当于我们的第三方工具pl/sql 2. 通过驱动获取连接对象Connection con=DriverManager.getConnection(“jdbc:oracle:thin:@10.1.12.138:1521:orcl",...
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应用程序都具有下面的基本流程: 1、加载数据库驱动并建立到数据库的连接。 2、执行SQL语句。 3、处理结果。 4、从数据库断开连接释放资源。下面我们就来仔细看一看每一个步骤:其实按照上面所说每个...
java数据库连接ResultSet
是一个最简单,也是学习jsp必须会的一个入门实验----通过jdbc连接数据库。 采用jsp+access数据库实现,同时使用javabean通过jdbc连接数据库。运行结果将显示从数据库查询出的图书。里面包含了javabean的源代码及解释...
通过反射从数据库返回集合ResultSet中得到实体对象的list集合
JDBC访问数据库的步骤 1. 新建java项目:JDBC,新建 class文件:TestJDBC 2. JDBC用到的类库基本都位于java.sql.*包中,程序中引入该包: Import java.sql.*; 3. 添加要用的数据库中的包,找到数据库中的Driver....
看前面的那一版注释,加了同步,线程安全,封装了jdbc常用操作,增删改查,查询ResultSet指定位置的记录,返回ResultSet每个列的名字,查询ResultSet中记录的行数...... 含源代码,测试代码!!!! 另附API说明,powerdesign图,...
JDBC ResultSet 是一个表示数据库的数据表,通常通过执行查询数据库的语句产生该表。REF CURSOR 是 PL/SQL 中相应的类型。Java 存储过程的调用规范将 ResultSet 映射到 REF CURSOR。在 Oracle9i 之前,不可能从 Java...
封装了jdbc常用操作,增删改查,查询ResultSet指定位置的记录,返回ResultSet每个列的名字,查询ResultSet中记录的行数...... 含源代码,测试代码!!!! 另附API说明,powerdesign图,mysql/mssql数据库代码. 用户只需使用...
// 对数据库进行查看操作时用executeQuery()返回ResultSet结果集。 ResultSet res = ste.executeQuery(); 5.处理结果 当是返回int型时 if(i > 0){ System.out.println("操作成功!"); } 当返回ResultSet型结果集...
一次只从数据库中查询最大maxCount条记录 * @param sql 传入的sql语句 * @param startNo 从哪一条记录开始 * @param maxCount 总共取多少条记录 */ public void getData(String sql,int startNo,int maxCount){ ...
1 将数据库的JDBC驱动加载到classpath中,在基于JAVAEE的WEB应用实际开发过程中,通常要把目标数据库产品的JDBC驱动复制到WEB-INF/lib下. 2 加载JDBC驱动,并将其注册到DriverManager中。 3 建立数据库连接,取得...
使用JDBC-ODBC桥驱动程序连接数据库 基本步骤: o(1)加载并注册数据库驱动 o(2)通过DriverManager获取数据库连接 o(3)通过Connection对象获取Statement对象 o(4)使用Statement接口执行SQL语句 o(5)操作...
最近在做毕业设计,需要用到数据库,在用结果集ResultSet判断的时候遇到一个郁闷的事情。 一开始我的想法是这么一个框架: ResultSet rs = dao.executeQuery(sql); if(rs不为空){ while(rs.next()){ … } }else{ … ...
JDBC连接数据库,里面有封装好的Connection、PreparedStatement、ResultSet,连接数据库和关闭这三种连接可以直接调用,简洁化!
JavaJDBC的视频,通过ResultSet执行查询操作,视频详细描述了如何使用ResultSet执行查询的案例。
**java.sql** 以及 **javax.sql**的两个包下,以后同学们导包的时候要注意。 图中是几个核心类的关系。 ...- ResultSet:结果集,Statement执行完sql---select之后,会返回结果,结果给了ResultSet