`

JDBC设置回滚点

    博客分类:
  • java
阅读更多

有的时候操作数据库需要先删除一个数据表的数据,然后再插入另一个表的数据,这个时候就需要使用回滚点,示例代码如下

//添加一个新的行业类型
	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使用中设置事务回滚的保存点的方法

    主要介绍了在Java的JDBC使用中设置事务回滚的保存点的方法,JDBC是Java用于连接各种数据库的API,需要的朋友可以参考下

    JDBC事务处理、提交、回滚。.docx

    JDBC事务处理、提交、回滚。

    jdbc连接数据库的方式2

    二、JDBC连接MySql方式 下面是使用JDBC连接MySql的一个小的教程 1、查找驱动程序 MySQL目前提供的java驱动程序为Connection/J,可以从MySQL官方网站下载,并找到mysql-connector-java-3.0.15-ga-bin.jar文件,此...

    JDBC专题(五)-JDBC专题-JDBC事务.docx

    3.2设置事务回滚点 1.事务(Transaction)的概念 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功。 举例:需求:把大象放入冰箱 1.打开冰箱门 2.放入大象 3.关闭冰箱门 例如:...

    Java-JDBC【源码】事务介绍、事务特性、操作事务(事务提交、异常回滚)

    Java-JDBC【之】事务介绍、事务特性、操作事务(事务提交、异常回滚) 1.数据库事务 1.1.介绍 1.2.事务特性(ACID) 1.3.隔离性(Isolation),带来的问题与处理 1.4.JDBC事务处理 2.事务提交(代码实现) 3.异常...

    JDBC事务处理机制探秘

    1、JavaBean中使用JDBC事务处理 ...//回滚JDBC事务 16. exc.printStackTrace(); 17. dbc.close(); 18. return -1; 19. } 20. } 2、SessionBean中的JTA事务 。 。 。 。 。 。 。 。 。

    详解Java的JDBC API中事务的提交和回滚

    主要介绍了Java的JDBC API中事务的提交和回滚,JDBC是Java用于和数据库软件连接的API,需要的朋友可以参考下

    基于韩顺平老师数据库完结和jdbc完结

    JDBC程序中当一个Connection对象创建时,默认情况下是自动提交事务:每次执行一个SQL语句时,如果执行成功,就会向数据库自动提交,而不能回滚。JDBC程序中为了让多个SQL语句作为一个整体执行,需要使用事务。

    Java_JDBC由浅入深

    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

    javaee-jdbc,jdbc 编程,事务控制和回滚

    MySql事务无法回滚的原因有哪些

    使用MySQL时,如果发现事务无法回滚,但Hibernate、Spring、JDBC等配置又没有明显问题,到底是什么原因,下面与大家分享下

    MySQL数据库在idea中的增删改查,JDBC简化,JDBC工具类封装,orm模式,数据库三层架构,JDBC事务

    本项目为一个简单的JDBC项目,包括:MySQL数据库在idea中的增删改查,JDBC简化,JDBC工具类封装,orm模式,数据库三层架构,JDBC事务 新建一个ProductManager的项目,实现利用ORM思想和三层架构以下功能: t_product...

    JDBCPool.java

    JDBC连接池 原子性:最小的单元,如果一个是失败了,则一切的操作将全部失败。 一致性:如果事务出现错误,则回到最原始的状态 隔离性:多个事务之间无法访问,只有当事务完成后才可以看到结果 持久性:当一个...

    Java实习报告:通过JDBC方式操作数据库(带实例和代码).doc

    目录: 1.实验目的 (1)掌握通过JDBC方式操作数据库的基本步骤。 (2)掌握增、删、改记录...否则回滚插入操作。 实验题3:给student表增加一pic字段,使之能存放图片,并通过程序存入图片和读取图片。 3.实习总结

    jdbc事务练习_连接2个数据库

    jdbc事务练习_连接2个数据库 模拟一次转账操作,从oracle中取50到mysql的账户中; 2个数据库的user表都进行update操作 mysql的update失败会回滚oracle的update

    jdbc基础和参考

    一般在做双向多对一(一对多)关联关系映射的时候,一般会设置让一的一方放弃对关联关系的维护,以减少不必要的更新语句 一对一: 基于外键的一对一 Wife Husband id id name name h_id references Husband...

    JDBC总结——事务

    文章目录事务一、事务的基本介绍1、概念2、操作3、操作实例4、MySQL数据库中默认自动提交二、事务的四大特征三、事务的隔离级别1、概念2、存在的问题3、隔离级别四、Jdbc事务控制1、概述2、控制事务的API:3、核心...

    JDBC.rar_Table

    请在数据库中创建表格记录上面的类,并用界面显示数据库中的数据,用户可以通过界面插入,删除和修改数据,可以修改多个数据再进行提交,这时候要求一个更改没有成功更新,所有更新都要回滚。 要求: 1. 安装MySql,...

    AS400技术手册1.7--PDF版本

    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 ...

Global site tag (gtag.js) - Google Analytics