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

JDBC事务的保存点处理

    博客分类:
  • jdbc
阅读更多


在JDBC的事物处理中,可以应用保存点技术,对一个事物中的处理进行部分提交.
如下示例,三个处理

1,张三减10元
2,李四加10元
3,李四加100元,

在3的地方出错的话,把1和2的处理进行提交,使用了保存点技术.

示例代码:
package test.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Savepoint;

public class SavePoint {
    public static void main(String[] args) throws Exception {
        savepoint();
    }

    public static void savepoint() throws Exception {
        // TODO Auto-generated method stub
        System.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/jdbc", "root", "");
       
        //初始化不自动提交
        conn.setAutoCommit(false);

        // 张三减10元
        String sql = "update user set money = money - 10 where id = 1";
        PreparedStatement st = conn.prepareStatement(sql);
        st.executeUpdate();

        // 李四加10元
        sql = "update user set money = money + 10 where id = 2";
        st = conn.prepareStatement(sql);
        st.executeUpdate();
       
        // 设立保存点
        Savepoint sp = conn.setSavepoint();

        // 李四加再加100元(SQL的where关键字写的不对,会出现异常)
        sql = "update user set money = money + 100 wherewhere id = 2";
        st = conn.prepareStatement(sql);
        try {
            st.executeUpdate();
        } catch (Exception e) {
            // 回滚到李四加10元后的状态
            conn.rollback(sp);
            System.out.println ("回滚到李四加10元后的状态");
        }
        conn.commit();
        st.close();
        conn.close();
    }

}

执行文件后,查看数据库的记录,可以发现张三减少了10元,而李四增加了10元.
第三个处理李四再加100元的操作并没有进行.

总结:
1,开始要把connection设置成不进行自动提交
2,中间设定保存点
3,回滚的地方要使用保存点
4,最后不要忘记进行commit

分享到:
评论

相关推荐

    JDBC事务管理的简单实现

    下面是关于JDBC事务管理的简单实现的知识点。 一、事务管理的必要性 在数据库编程中,事务管理是非常重要的一部分。它可以确保数据的一致性和完整性。事务管理可以防止数据的不一致和丢失,确保数据的安全和可靠性...

    JDBC事务管理.docx

    JDBC事务管理是数据库...总之,JDBC事务管理是确保数据库操作正确性和一致性的关键,通过理解和应用ACID原则以及适当的并发控制机制,开发人员可以有效地处理并发环境下的事务处理,保证系统的稳定性和数据的完整性。

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

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

    JDBC事务操作例子所需jar包

    在Java中,JDBC事务处理主要涉及以下几个关键概念: 1. **Connection对象**:它是与数据库的会话,通过该对象可以开启、提交和回滚事务。在连接池中获取到的Connection通常已经自动开启了事务,但如果没有,可以...

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

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

    JDBC事务管理项目

    本项目“JDBC事务管理项目”旨在教你如何在Java应用中使用JDBC来处理数据库事务,确保数据的一致性和完整性。 **事务的概念** 事务是数据库操作的基本单元,它包含了对数据库的一系列操作,这些操作要么全部成功,...

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

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

    spring jdbc 事务

    在描述中提到的博客链接(由于实际链接无法访问,这里无法提供具体细节),可能详细讲述了如何在Spring中配置和使用JDBC事务,包括示例代码和常见问题解决。在实际项目中,理解并正确应用这些事务管理机制对于保证...

    JDBC的事务初探

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

    Java事务管理学习之JDBC详解

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

    jdbc入门、分页以及事务

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

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

    在处理复杂的数据库操作时,保存点(Savepoint)是一个非常有用的工具,特别是在需要部分回滚事务的情况下。本文将详细介绍如何在JDBC中设置和管理事务的保存点。 首先,了解JDBC中的事务控制。在默认情况下,JDBC...

    JDBC事物应用源码文件

    以下是关于JDBC事务应用的核心知识点: 1. **事务的基本概念**:事务是数据库操作的基本单元,它封装了一组逻辑操作。事务必须满足ACID(原子性、一致性、隔离性和持久性)属性,以保证数据的一致性。 2. **JDBC中...

    Java事务处理总结[归类].pdf

    然而,JDBC事务的局限性在于它只能在一个数据库连接的范围内操作,无法跨数据库进行事务处理。 2. JTA事务提供了一种更高级别的、与实现和协议无关的API,允许应用程序执行分布式事务,涉及多个网络资源和数据库。...

    JDBC笔记.pdf

    本篇JDBC笔记详细介绍了JDBC编程的相关知识点,包括数据库连接、SQL语句执行、事务处理等,同时也涉及到了对MySQL数据库的增删改查操作和事务的ACID属性等重要概念。 首先,笔记中提到了JDBC驱动的概念。JDBC驱动是...

    Java中的事务处理

    2. **JDBC事务管理** - **手动提交与回滚**:通过Connection对象的commit()和rollback()方法来控制事务的开始、提交和回滚。 - **自动提交模式**:默认情况下,JDBC连接处于自动提交模式,每次SQL语句都会自动提交...

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

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

    oracle事务处理

    Oracle 事务处理是数据库管理中...总的来说,Oracle的事务处理机制是确保数据库操作正确性和一致性的重要工具,通过合理使用提交、回滚、保存点以及只读事务,可以有效地管理复杂的数据库操作,并保证数据的准确无误。

Global site tag (gtag.js) - Google Analytics