`
java_frog
  • 浏览: 253017 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jdbc中利用Savepoint实现rollback

 
阅读更多
首先我们来说一下setAutoCommit,当我们设置为true或默认情况下,jdbc事务会自动提交,当我们将setAutoCommit设为false时,虽然是手动提交事务,但是如果不写手动提交代码,最后也会提交。那有什么不一样呢,例如:我们在一个方法内多次执行数据库操作,中间有根据状态或上一返回值来确定是否回滚的情况下,如果是自动提交,那回滚就不起作用,如果是手动提交状态,那回滚就有效。

接下来还是看Savepoint
con.setAutoCommit(false);
			Savepoint first=con.setSavepoint("first");
			ps=con.prepareStatement("update  employees t set t.first_name='guohr1' where t.employee_id=207");
			flag=ps.executeUpdate();
			log.info("flag:"+flag);
			
			Savepoint second=con.setSavepoint("second");
			ps=con.prepareStatement("update  employees t set t.first_name='guohr2' where t.employee_id=207");
			flag=ps.executeUpdate();
			log.info("flag:"+flag);
			
			Savepoint third=con.setSavepoint("third");
			ps=con.prepareStatement("update  employees t set t.first_name='guohr3' where t.employee_id=207");
			flag=ps.executeUpdate();
			log.info("flag:"+flag);
			
			con.rollback(second);

    我在每次update前创建了一个回滚点,当最后rollback的时候如果参数如上为second,那么first_name='guohr1',如果参数为third,那么为guohr2,当然实际中不是像滚雪球一样这么随意滚的,可以根据前面返回的状态或值来判断是否需要回滚及滚到哪一步之前。
分享到:
评论
1 楼 qingfeng825 2011-10-20  
1、con.setAutoCommit(false);   不显示调用commit也会提交,是因为con.close()的时候会提交,是听别人这样讲的,找oracle JDBC的源码没有找到。

2、setSavepoint 方式挺好的,不过一般程序中都是用try{},只要有一个异常就全部回滚,不会仔细设计。

相关推荐

    JDBC事务管理及SavePoint示例Java开发Jav

    在实际开发中,了解并熟练运用JDBC事务管理和SavePoint,可以有效地提高程序的健壮性,减少因数据不一致引发的问题。这份PDF文档可能包含了更多关于这两个主题的深入解释、最佳实践以及实战案例,对于提升Java数据库...

    JDBC入门中文文档

    - **保存点**:通过`conn.setSavepoint("SavePoint1")`设置保存点,可以使用`conn.rollback(savepoint)`回滚到指定保存点。 **4. 结果集处理** - **ResultSet**:执行SQL查询后返回的结果集,可以使用`next()`方法...

    sqljdbc.jar、sqljdbc4.jar

    "sqljdbc4.jar"是针对Java 6的一个版本,它包含了额外的功能和对新特性的支持,比如支持Java.sql.Savepoint接口,这允许应用程序在事务中设置保存点,以便在出现问题时回滚到特定状态。而"sqljdbc.jar"可能不包含...

    JDBC事物应用源码文件

    8. **嵌套事务**:JDBC不直接支持嵌套事务,但可以通过特定数据库的特性(如MySQL的SAVEPOINT)或使用高级框架(如JTA)来模拟实现。 9. **事务的幂等性**:在某些场景下,同一个事务操作无论执行多少次,结果都...

    javajdbc

    - JDBC支持事务的提交、回滚和隔离级别设置,通过`Connection`对象的`commit()`、`rollback()`和`setTransactionIsolation()`方法实现。 6.批处理: - 对于多条相似的SQL语句,批处理可以提高性能。`addBatch()`...

    JDBC事务的保存点处理

    一旦设置了保存点,如果在事务过程中发生错误或需要部分回滚,可以使用`rollback(Savepoint savepoint)`方法来撤销到该保存点之前的所有操作。例如: ```java try { // 执行一些数据库操作 } catch (SQLException ...

    JDBC学习笔记

    - **实现方式**:使用`Connection.setSavepoint(String name)`设置保存点,使用`Connection.rollback(Savepoint savepoint)`回滚到指定保存点。 #### 十六、JTA分布式事务简介 - **概念**:JTA(Java Transaction ...

    JDBC入门基础讲座

    JDBC支持事务控制,包括提交(commit)、回滚(rollback)和保存点(savepoint)。事务的ACID特性(原子性、一致性、隔离性和持久性)确保了数据的完整性和一致性。 ### 错误处理和异常处理 在JDBC编程中,应捕获...

    MySQL整合JDBC

    * JDBC(Java Database Connectivity)是 Java 语言中用于连接数据库的应用程序接口 * JDBC 提供了连接数据库、执行 SQL 语句、处理结果集等功能 * JDBC 的主要组件包括 DriverManager、Connection、Statement、...

    jdbc文档案例.zip

    10. **JDBC API的其他接口和类**: `CallableStatement`用于调用存储过程,`DatabaseMetaData`提供了关于数据库的元数据信息,`Savepoint`用于在事务中设置保存点等。 在这个案例中,你可能会学习如何配置数据库连接...

    JDBC的事务初探

    博文链接(https://superleo.iteye.com/blog/130876)中可能提供了对JDBC事务管理的源码分析,可以深入理解事务管理的内部实现。 10. **相关工具** 在开发过程中,可以使用像SQL Developer、IntelliJ IDEA等IDE...

    Jdbc深入分析

    在实际项目中,通常不会直接使用JDBC进行数据库操作,而是采用DAO(Data Access Object)设计模式,通过定义接口和实现类来封装数据库访问逻辑。 **6.2 DAO设计模式简介** DAO设计模式是一种软件设计模式,它为...

    JDBC API数据库编程实作教材

    通过学习和实践本教材中的内容,开发者将能够熟练地利用JDBC API进行数据库编程,实现高效、稳定的数据库应用。无论你是初学者还是有经验的开发者,都能从中受益匪浅,提升自己的数据库开发技能。

    JDBC连接数据库JDBC连接数据库.ppt

    1. **事务管理**:JDBC支持事务控制,包括提交(commit)、回滚(rollback)和保存点(savepoint)。 2. **批处理**:通过Statement对象的`addBatch()`和`executeBatch()`方法,可以批量执行多条SQL语句,提高效率。...

    Java数据库接口JDBC入门基础讲座

    JDBC支持事务控制,包括提交(commit)、回滚(rollback)和保存点(savepoint)。在多条SQL语句执行过程中,若某条语句执行失败,可以通过回滚事务来恢复到事务开始前的状态。 五、JDBC优化技巧 1. 使用...

    jdbc入门、分页以及事务

    JDBC中的分页通常通过在SQL查询中添加LIMIT和OFFSET子句来实现(MySQL)或ROWNUM(Oracle)。 1. **LIMIT/OFFSET语法**: 在MySQL中,`SELECT * FROM table LIMIT limit OFFSET offset;`,limit表示每页的数据量,...

    javaee-jdbc

    3. **回滚事务**:如果在事务过程中发生错误,可以调用`Connection`的`rollback()`方法回滚事务,撤销所有已执行的操作。 4. **保存点**:还可以设置保存点(savepoint),在事务中某个特定点保存状态。如果后续操作...

    三歪教你学JDBC1

    JDBC(Java Database Connectivity)是Java编程语言中用于与各种数据库进行交互的一种标准接口。它由Sun Microsystems(现已被Oracle收购)开发,提供了一套API,使得Java开发者能够执行SQL语句并处理结果。JDBC使得...

    Java_JDBC学习教程 由浅入深.doc

    - 通过示例展示如何使用 JDBC 实现转账操作。 - 转账操作通常需要在两个账户之间转移资金,必须确保这两个操作要么全部成功,要么全部失败。 **8.2 JDBC 默认事务** - JDBC 默认情况下每个 SQL 语句都是一个独立的...

    Java语言SQL接口—JDBC编程技术

    Java语言的SQL接口,即Java Database Connectivity(JDBC),是Java平台中用于访问数据库的关键标准API。它由一组Java类和接口组成,允许Java开发者执行SQL语句并与各种数据库进行交互。JDBC提供了统一的接口,使得...

Global site tag (gtag.js) - Google Analytics