有的时候操作数据库需要先删除一个数据表的数据,然后再插入另一个表的数据,这个时候就需要使用回滚点,示例代码如下
//添加一个新的行业类型 public int addSupplierDetailModelEnt(List<String> newName,List<String> newSelect,List<String> minLength,List<String> maxLength,List<String> chooseType,List<String> newDescribe,int Relation_Company_id) throws SQLException { Savepoint sp = null; System.out.println("addSupplierDetailModelEnt begin!"); System.out.println("Relation_Company_id : "+Relation_Company_id); //删除原来的数据 String basicInfoSql2 = "delete from supplier_detail_model where Relation_Company_id = ? "; // 插入一条数据 String basicInfoSql = "insert into supplier_detail_model(Field_name,Field_type,minLength,maxLength,chooseType,newDescribe,Relation_Company_id) values(?,?,?,?,?,?,?)"; conn = bdConn.getConnection(); int[] count = new int[newName.size()]; try { conn.setAutoCommit(false); pstm = conn.prepareStatement(basicInfoSql2); pstm.setInt(1, Relation_Company_id); pstm.executeUpdate(); sp = conn.setSavepoint(); //设置回滚点 pstm = conn.prepareStatement(basicInfoSql); for(int i=0;i<newName.size();i++){ System.out.println(i); pstm.setString(1, newName.get(i)); pstm.setString(2, newSelect.get(i)); pstm.setString(3, minLength.get(i)); pstm.setString(4, maxLength.get(i)); pstm.setString(5, chooseType.get(i)==null?"no":chooseType.get(i)); pstm.setString(6, newDescribe.get(i)==null?"no":newDescribe.get(i)); pstm.setInt(7, Relation_Company_id); pstm.addBatch(); } count = pstm.executeBatch(); System.out.println("addSupplierDetailModelEnt commit!"); conn.commit(); } catch (Exception e) { System.out.println("addSupplierDetailModelEnt rollback!"); conn.rollback(sp);//回滚到那个事务点上去 conn.commit(); e.printStackTrace(); } finally { try { DBConnection.closeResultSet(rs); } catch (SQLException e) { e.printStackTrace(); } try { DBConnection.closePtmt(pstm); } catch (SQLException e) { e.printStackTrace(); } try { DBConnection.closeConnection(conn); } catch (SQLException e) { e.printStackTrace(); } } return count.length; }
相关推荐
主要介绍了在Java的JDBC使用中设置事务回滚的保存点的方法,JDBC是Java用于连接各种数据库的API,需要的朋友可以参考下
JDBC事务处理、提交、回滚。
二、JDBC连接MySql方式 下面是使用JDBC连接MySql的一个小的教程 1、查找驱动程序 MySQL目前提供的java驱动程序为Connection/J,可以从MySQL官方网站下载,并找到mysql-connector-java-3.0.15-ga-bin.jar文件,此...
3.2设置事务回滚点 1.事务(Transaction)的概念 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功。 举例:需求:把大象放入冰箱 1.打开冰箱门 2.放入大象 3.关闭冰箱门 例如:...
Java-JDBC【之】事务介绍、事务特性、操作事务(事务提交、异常回滚) 1.数据库事务 1.1.介绍 1.2.事务特性(ACID) 1.3.隔离性(Isolation),带来的问题与处理 1.4.JDBC事务处理 2.事务提交(代码实现) 3.异常...
1、JavaBean中使用JDBC事务处理 ...//回滚JDBC事务 16. exc.printStackTrace(); 17. dbc.close(); 18. return -1; 19. } 20. } 2、SessionBean中的JTA事务 。 。 。 。 。 。 。 。 。
主要介绍了Java的JDBC API中事务的提交和回滚,JDBC是Java用于和数据库软件连接的API,需要的朋友可以参考下
JDBC程序中当一个Connection对象创建时,默认情况下是自动提交事务:每次执行一个SQL语句时,如果执行成功,就会向数据库自动提交,而不能回滚。JDBC程序中为了让多个SQL语句作为一个整体执行,需要使用事务。
8.4 设置保存点 55 8.5 JTA事务的介绍 56 8.6 数据库的隔离级别介绍 56 8.6.1 未提交读 57 8.6.2 提交读 58 8.6.3 重复读 59 8.6.4 序列化读 60 8.7 小结 62 第九节 PreparedStatement接口的使用 62 第十节 ...
javaee-jdbc,jdbc 编程,事务控制和回滚
使用MySQL时,如果发现事务无法回滚,但Hibernate、Spring、JDBC等配置又没有明显问题,到底是什么原因,下面与大家分享下
本项目为一个简单的JDBC项目,包括:MySQL数据库在idea中的增删改查,JDBC简化,JDBC工具类封装,orm模式,数据库三层架构,JDBC事务 新建一个ProductManager的项目,实现利用ORM思想和三层架构以下功能: t_product...
JDBC连接池 原子性:最小的单元,如果一个是失败了,则一切的操作将全部失败。 一致性:如果事务出现错误,则回到最原始的状态 隔离性:多个事务之间无法访问,只有当事务完成后才可以看到结果 持久性:当一个...
目录: 1.实验目的 (1)掌握通过JDBC方式操作数据库的基本步骤。 (2)掌握增、删、改记录...否则回滚插入操作。 实验题3:给student表增加一pic字段,使之能存放图片,并通过程序存入图片和读取图片。 3.实习总结
jdbc事务练习_连接2个数据库 模拟一次转账操作,从oracle中取50到mysql的账户中; 2个数据库的user表都进行update操作 mysql的update失败会回滚oracle的update
一般在做双向多对一(一对多)关联关系映射的时候,一般会设置让一的一方放弃对关联关系的维护,以减少不必要的更新语句 一对一: 基于外键的一对一 Wife Husband id id name name h_id references Husband...
文章目录事务一、事务的基本介绍1、概念2、操作3、操作实例4、MySQL数据库中默认自动提交二、事务的四大特征三、事务的隔离级别1、概念2、存在的问题3、隔离级别四、Jdbc事务控制1、概述2、控制事务的API:3、核心...
请在数据库中创建表格记录上面的类,并用界面显示数据库中的数据,用户可以通过界面插入,删除和修改数据,可以修改多个数据再进行提交,这时候要求一个更改没有成功更新,所有更新都要回滚。 要求: 1. 安装MySql,...
5.3.6. 多个相关数据库操作的回滚ROLBK及COMIT操作 5.3.7. SDA+ RPG IV 进行子文件系统设计 5.3.8. 使用SDA + RPG IV 进行交互式程序设计 5.4. CL 5.5. DELPHI 5.5.1. 简单的利用ODBC 5.6. VB 5.7 MS.NET 5.8 API ...