`

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设置事务自动提交

    本篇文章将深入探讨如何使用JDBC设置事务的自动提交模式,以及它的工作原理和重要性。 首先,理解事务的基本概念至关重要。事务是数据库执行的一组操作,这些操作要么全部完成,要么全部不完成,即遵循ACID(原子性...

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

    在JDBC中,事务管理包括开始事务、提交事务和回滚事务。 1. **JDBC事务的基本概念** - **事务**:事务是数据库系统中执行的一系列操作的集合,这些操作要么全部成功,要么全部失败。事务具有四大特性,即原子性...

    spring 简单实例 事务回滚

    2. 注解驱动:我们可以使用`@EnableTransactionManagement`注解启用基于注解的事务管理,并配置事务属性,比如传播行为、隔离级别和超时设置。 3. 使用`@Transactional`:在需要进行事务控制的方法上添加`@...

    oracle 在java中的事务处理和异常回滚。

    此外,Oracle数据库支持事务的保存点(SAVEPOINT),这是一种在事务中设置的标记,允许在回滚时只回滚到保存点,而不是整个事务。这在需要部分撤销操作但又不想完全回滚事务的情况下非常有用。 总的来说,Oracle在...

    JDBC事务的保存点处理

    保存点(Savepoint)是JDBC提供的一种机制,它允许在事务内部设置一个或多个点,这样在事务回滚时可以选择性地撤销到某个保存点之前的操作,而不是回滚整个事务。这种功能对于复杂业务逻辑和多步骤操作非常有用。 ...

    Spring/SpringMVC/MyBatis整合+事务回滚

    6. **事务管理**:Spring提供了PlatformTransactionManager接口来管理事务,你可以选择DataSourceTransactionManager(适用于JDBC)或者HibernateTransactionManager(适用于Hibernate)。配置事务管理器后,可以...

    Jdbc相关知识点归档.rar

    本归档文件"Jdbc相关知识点归档.pdf"将深入探讨JDBC的核心概念和应用。 1. JDBC驱动类型: - Type 1:纯Java API,通过ODBC桥连接数据库,性能较低。 - Type 2:部分Java,部分本地代码,如NetJDBC,适用于Oracle...

    Dm7JdbcDriver16.jar Dm7JdbcDriver17.jar Dm7JdbcDriver18.jar

    达梦JDBC驱动支持ACID(原子性、一致性、隔离性、持久性)特性,可以进行事务管理和并发控制,比如设置自动提交、手动提交、回滚事务等。 6. **预编译语句与批处理**: 预编译语句(PreparedStatement)可以提高...

    jdbc jdbc jdbc

    `Connection`对象提供了开始、提交和回滚事务的方法。 6. **批处理(Batch Processing)**:对于需要执行大量相似SQL语句的情况,JDBC提供批处理功能,允许一次发送多个SQL语句,从而提高效率。 7. **JDBC URL**:...

    ApacheCamel-JDBC

    在"Apache Camel-JDBC"这个主题中,我们可以深入探讨以下几个关键知识点: 1. **Apache Camel 概述**: Apache Camel 提供了一个丰富的组件库,涵盖了各种协议和数据格式,如HTTP、FTP、JMS、MQTT、XML和JSON等。...

    jdbc教程_jdbc教程

    5. **事务管理**:JDBC提供了开始、提交和回滚事务的方法,以确保数据的一致性。 ### JDBC基本步骤 1. **加载驱动**:`Class.forName()`方法加载JDBC驱动。 2. **建立连接**:`DriverManager.getConnection()`创建...

    sqljdbc.jar

    6. **游标**:通过设置不同的游标类型,控制数据的读取方式,如只进、可滚动等。 7. **元数据查询**:获取数据库、表、列等的元数据信息。 8. **JNDI查找**:在应用服务器环境中,可以通过JNDI查找来获取数据库连接...

    jdbc(jar文件)

    9. **事务处理**:JDBC提供了对数据库事务的支持,开发者可以通过`Connection`对象的`setAutoCommit()`和`commit()`、`rollback()`方法来控制事务的开始、提交和回滚。 10. **性能优化**:使用JDBC时,可以考虑...

    JDBC笔记.pdf

    此外,还可以设置事务的保存点,并在需要时回滚到保存点。 笔记中还介绍了JDBC的核心API,包括DriverManager类、Connection接口、Statement接口、PreparedStatement接口和ResultSet接口。DriverManager类用于管理和...

    spring-jdbc jar包.rar

    4. **JdbcTransactionManager**:Spring JDBC提供了事务管理功能,JdbcTransactionManager是基于JDBC的事务管理器,它负责控制数据库事务的开始、提交、回滚等操作。 5. **DataSourceUtils** 和 **ConnectionUtils*...

    JDBC知识总结(针对基础知识)

    -事务管理:通过Connection对象的`setAutoCommit(false)`开启手动事务,`commit()`提交或`rollback()`回滚事务。 JDBC是Java开发数据库应用程序的基础,通过熟练掌握JDBC,开发者可以编写高效、安全、跨平台的...

    sqlserver在JDK1.6用的JDBC

    现在,让我们深入探讨一下JDBC和SQL Server在JDK 1.6环境下的相关知识点: 1. **JDBC驱动类型**:JDBC驱动主要有四种类型(Type 1, 2, 3, 4),SQL Server JDBC驱动属于Type 4,即纯Java实现的驱动,无需依赖数据库...

    可用于oracle19c的jdbc驱动

    - **事务管理**:JDBC提供了对事务的控制,包括提交、回滚和隔离级别设置。 - **数据库元数据**:通过DatabaseMetaData接口,可以获取关于数据库的信息,如表结构、列信息等。 - **批处理**:通过Statement对象的...

Global site tag (gtag.js) - Google Analytics