`
hlbng
  • 浏览: 177513 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JDBC事务保存点,即事部分回滚

    博客分类:
  • JDBC
阅读更多
JDBC中的事务保存点,即事务发生回滚的时候,回滚到保存点那里去,事务开始到保存点之间的操作不用回滚.

事务(SavePoint)

l       当只想撤销事务中的部分操作时可使用SavePoint

l       SavePoint sp = connection.setSavepoint();

l       connection.rollerbak(sp); //回滚到那个事务点上去

l       connection.commit();

 

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Savepoint;

import java.sql.Statement;

 

public class SavePointTest {

    public static void main(String[] args) throws SQLException {

       test();

    }

 

    static void test() throws SQLException {

       Connection conn = null;

       Statement st = null;

       ResultSet rs = null;

       Savepoint sp = null;

       try {

           conn = JdbcUtils.getConnection();

           conn.setAutoCommit(false);         

           st = conn.createStatement();

           String sql = "update user set money=money-10 where id=1";

           st.executeUpdate(sql);

           sp = conn.setSavepoint();

 

           sql = "update user set money=money-10 where id=3";

           st.executeUpdate(sql);

 

           sql = "select money from user where id=2";

           rs = st.executeQuery(sql);

           float money = 0.0f;

           if (rs.next()) {

              money = rs.getFloat("money");

           }

           if (money > 300)

              throw new RuntimeException("已经超过最大值!");

 

           sql = "update user set money=money+10 where id=2";

           st.executeUpdate(sql);

 

           conn.commit();

       } catch (RuntimeException e) {

           if (conn != null && sp != null) {

              conn.rollback(sp);//回滚到那个事务点上去

              conn.commit();

           }

           throw e;

       } catch (SQLException e) {

           if (conn != null)

              conn.rollback();

           throw e;

       } finally {

           JdbcUtils.free(rs, st, conn);

       }

    }

}

 

分享到:
评论

相关推荐

    JDBC事务的保存点处理

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

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

    1. **JDBC事务的基本概念** - **事务**:事务是数据库系统中执行的一系列操作的集合,这些操作要么全部成功,要么全部失败。事务具有四大特性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)...

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

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

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

    例如,如果在保存数据时发生错误,整个事务将被回滚,保证数据的一致性。 8. **测试与调试**:完成整合后,通过编写单元测试和集成测试来验证配置是否正确,确保事务管理和回滚功能正常工作。 以上就是Spring、...

    在Java的JDBC使用中设置事务回滚的保存点的方法

    总结来说,Java的JDBC提供了强大的事务管理能力,包括设置保存点以实现部分回滚。这对于处理复杂的业务逻辑和异常处理是非常有用的。正确理解和使用这些功能,可以帮助开发人员编写出更加健壮和灵活的数据库应用程序...

    JDBC事务管理的简单实现

    该控制器提供了统一的事务管理方法,包括事务的提交、回滚和保存点等。该控制器也可以提供事务的timeout管理和事务传播控制。 四、事务模板的实现 事务模板是指提供模板方法对事务处理的代码进行控制。事务模板...

    JDBC事务管理.docx

    JDBC事务管理是数据库操作的重要组成部分,特别是在多用户并发访问数据库的环境中,保证数据的一致性和完整性至关重要。本文主要探讨了事务的基本概念、ACID原则、数据库并发问题以及解决方案。 首先,事务是数据库...

    JDBC事务操作例子所需jar包

    当一组相关的操作必须一起成功完成,或者如果其中任何一部分失败,则全部回滚,事务就显得尤为重要。在本例中,我们关注的是与MySQL数据库交互时使用JDBC进行事务处理所需的相关jar包。 首先,我们需要`mysql-...

    JDBC事务 JTA事务 传播特性 隔离级别

    **JDBC事务**主要针对单个数据库连接,由数据库管理系统(DBMS)自身管理事务。JDBC提供了`Connection`对象的`commit()`和`rollback()`方法用于提交和回滚事务。这是简单的单阶段提交,适用于单一数据源的情况。 **...

    JDBC事务控制--讲述如何控制JDBC事务

    ### JDBC事务控制详解 在数据库应用开发中,事务管理是一项重要的功能,它确保了一系列操作能够作为一个整体被正确地执行或回滚。Java Database Connectivity (JDBC) 是 Java 平台中用于连接数据库的标准 API,提供...

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

    本篇将深入探讨JDBC API中关于事务的提交和回滚的细节。 在默认情况下,JDBC连接处于自动提交模式,这意味着每执行一个SQL语句,如果执行成功,该操作就会立即提交到数据库。这种模式适合于简单的应用,但在以下几...

    JDBC事务管理项目

    “JDBC事务管理项目”涵盖了如何在Java应用中利用JDBC进行事务控制,包括开启手动事务、提交、回滚以及设置事务隔离级别等。理解并掌握这些知识对于开发健壮的数据库应用至关重要,能够确保数据的完整性和一致性。

    spring jdbc 事务

    综上,Spring JDBC事务管理是Spring框架中重要的部分,通过理解并掌握其原理和使用方法,可以帮助开发者构建稳定、可靠的数据库应用程序。在实践中,要根据项目的具体需求选择合适的事务管理策略,并注意处理事务...

    JDBC的事务初探

    **JDBC事务初探** Java Database Connectivity(JDBC)是Java平台中用于与关系数据库进行交互的API。在处理数据库操作时,事务管理是至关重要的一个环节,它确保了数据的一致性和完整性。本篇文章将深入探讨JDBC中...

    jdbc入门、分页以及事务

    **JDBC事务** 事务是数据库操作的基本单元,确保数据的一致性和完整性。JDBC提供了对事务的支持。 1. **开启事务**: 通过`Connection`对象的`setAutoCommit(false)`方法关闭自动提交,从而手动控制事务的开始。 2...

    Java事务管理学习之JDBC详解

    Java事务管理学习之JDBC详解是Java事务管理学习的重要组成部分,文章详细介绍了Java事务管理学习之JDBC的相关知识点,包括事务的概念、特性、类型、JDBC事务管理等。 一、事务的概念 事务是数据库的逻辑工作单位,...

    4.Spring中的JdbcTemplate,Spring中的的事务,

    常用的实现类有`DataSourceTransactionManager`,它用于管理基于JDBC的事务。 #### TransactionDefinition 该接口定义了事务的一些属性,包括隔离级别、传播行为等。 - **事务的隔离级别**:控制事务与其他事务...

    基于java的企业级应用开发:Spring事务管理概述.ppt

    - `hasSavepoint()`:检查事务是否创建了保存点,保存点允许在回滚时仅回滚到特定点。 - `isCompleted()`:判断事务是否已完成,即提交或回滚。 - `isNewTransaction()`:确认当前事务是否为新创建的。 - `...

    day18-事务与连接池 3.jdbc中事务操作介绍

    在实际开发中,Spring框架提供了对JDBC事务管理的高级支持,通过声明式事务管理,开发者可以在XML配置或注解中定义事务边界,简化事务处理。例如,使用`@Transactional`注解可以声明一个方法为事务方法,Spring会...

Global site tag (gtag.js) - Google Analytics