有的时候操作数据库需要先删除一个数据表的数据,然后再插入另一个表的数据,这个时候就需要使用回滚点,示例代码如下
//添加一个新的行业类型 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设置事务的自动提交模式,以及它的工作原理和重要性。 首先,理解事务的基本概念至关重要。事务是数据库执行的一组操作,这些操作要么全部完成,要么全部不完成,即遵循ACID(原子性...
在JDBC中,事务管理包括开始事务、提交事务和回滚事务。 1. **JDBC事务的基本概念** - **事务**:事务是数据库系统中执行的一系列操作的集合,这些操作要么全部成功,要么全部失败。事务具有四大特性,即原子性...
2. 注解驱动:我们可以使用`@EnableTransactionManagement`注解启用基于注解的事务管理,并配置事务属性,比如传播行为、隔离级别和超时设置。 3. 使用`@Transactional`:在需要进行事务控制的方法上添加`@...
此外,Oracle数据库支持事务的保存点(SAVEPOINT),这是一种在事务中设置的标记,允许在回滚时只回滚到保存点,而不是整个事务。这在需要部分撤销操作但又不想完全回滚事务的情况下非常有用。 总的来说,Oracle在...
保存点(Savepoint)是JDBC提供的一种机制,它允许在事务内部设置一个或多个点,这样在事务回滚时可以选择性地撤销到某个保存点之前的操作,而不是回滚整个事务。这种功能对于复杂业务逻辑和多步骤操作非常有用。 ...
6. **事务管理**:Spring提供了PlatformTransactionManager接口来管理事务,你可以选择DataSourceTransactionManager(适用于JDBC)或者HibernateTransactionManager(适用于Hibernate)。配置事务管理器后,可以...
本归档文件"Jdbc相关知识点归档.pdf"将深入探讨JDBC的核心概念和应用。 1. JDBC驱动类型: - Type 1:纯Java API,通过ODBC桥连接数据库,性能较低。 - Type 2:部分Java,部分本地代码,如NetJDBC,适用于Oracle...
达梦JDBC驱动支持ACID(原子性、一致性、隔离性、持久性)特性,可以进行事务管理和并发控制,比如设置自动提交、手动提交、回滚事务等。 6. **预编译语句与批处理**: 预编译语句(PreparedStatement)可以提高...
`Connection`对象提供了开始、提交和回滚事务的方法。 6. **批处理(Batch Processing)**:对于需要执行大量相似SQL语句的情况,JDBC提供批处理功能,允许一次发送多个SQL语句,从而提高效率。 7. **JDBC URL**:...
在"Apache Camel-JDBC"这个主题中,我们可以深入探讨以下几个关键知识点: 1. **Apache Camel 概述**: Apache Camel 提供了一个丰富的组件库,涵盖了各种协议和数据格式,如HTTP、FTP、JMS、MQTT、XML和JSON等。...
5. **事务管理**:JDBC提供了开始、提交和回滚事务的方法,以确保数据的一致性。 ### JDBC基本步骤 1. **加载驱动**:`Class.forName()`方法加载JDBC驱动。 2. **建立连接**:`DriverManager.getConnection()`创建...
6. **游标**:通过设置不同的游标类型,控制数据的读取方式,如只进、可滚动等。 7. **元数据查询**:获取数据库、表、列等的元数据信息。 8. **JNDI查找**:在应用服务器环境中,可以通过JNDI查找来获取数据库连接...
9. **事务处理**:JDBC提供了对数据库事务的支持,开发者可以通过`Connection`对象的`setAutoCommit()`和`commit()`、`rollback()`方法来控制事务的开始、提交和回滚。 10. **性能优化**:使用JDBC时,可以考虑...
此外,还可以设置事务的保存点,并在需要时回滚到保存点。 笔记中还介绍了JDBC的核心API,包括DriverManager类、Connection接口、Statement接口、PreparedStatement接口和ResultSet接口。DriverManager类用于管理和...
4. **JdbcTransactionManager**:Spring JDBC提供了事务管理功能,JdbcTransactionManager是基于JDBC的事务管理器,它负责控制数据库事务的开始、提交、回滚等操作。 5. **DataSourceUtils** 和 **ConnectionUtils*...
-事务管理:通过Connection对象的`setAutoCommit(false)`开启手动事务,`commit()`提交或`rollback()`回滚事务。 JDBC是Java开发数据库应用程序的基础,通过熟练掌握JDBC,开发者可以编写高效、安全、跨平台的...
现在,让我们深入探讨一下JDBC和SQL Server在JDK 1.6环境下的相关知识点: 1. **JDBC驱动类型**:JDBC驱动主要有四种类型(Type 1, 2, 3, 4),SQL Server JDBC驱动属于Type 4,即纯Java实现的驱动,无需依赖数据库...
- **事务管理**:JDBC提供了对事务的控制,包括提交、回滚和隔离级别设置。 - **数据库元数据**:通过DatabaseMetaData接口,可以获取关于数据库的信息,如表结构、列信息等。 - **批处理**:通过Statement对象的...