JDBC事务管理

1. 概述

  事务是包含多个操作的业务,如果这个业务被事务管理,则这多个操作要么全部被执行,要么全不执行。

  具体原理详见我的SQL系列文章"事务":https://www.cnblogs.com/NyanKoSenSei/p/11498978.html

 

2. 管理事务

  (1) 开启事务

    执行SQL之前需要开启事务,建议获取连接后就将事务开启。

  (2) 提交事务

    当所有SQL完成无错后,立即提交事务,防止意外导致回滚。

  (3) 回滚事务

    在有错误抛出异常的时候回滚事务。

    注意:

      1) 由于可能面对各种各样的错误导致操作异常,建议将 catch 中的异常范围设置为 Exception 。

      2) 由于可能是没有获取连接就抛出异常请求回滚事务,回滚事务前需要判断是否已获得连接,获得连接的事务才可以回滚。

      3) 如果事务提交以后,再次捕捉到了错误导致的回滚操作,并不影响最近事务提交后的数据。

  例子

public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        try {
            // 获取连接
            conn = JDBCUtils.getConnection();
            // 开启事务
            conn.setAutoCommit(false);
            // 编写SQL
            String sql = "SQL语句";
            // 获取执行SQL对象
            pstmt = conn.prepareStatement(sql);
            // 执行SQL
            pstmt.executeUpdate();
            // 提交事务
            conn.commit();
        } catch (Exception e) {
            // 事务回滚
            try {
                if (conn != null) {
                    conn.rollback();
                }
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
            // 抛出异常
            e.printStackTrace();
        } finally {
            // 释放资源
            JDBCUtils.close(pstmt, conn);
        }
    }

转载于:https://www.cnblogs.com/NyanKoSenSei/p/11558292.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值