JDBC_JDBC 事务的处理

参考:传智播客&黑马程序员

JDBC 事务的处理

之前我们是使用 MySQL 的命令来操作事务。接下来我们使用 JDBC 来操作银行转账的事务。

准备数据

CREATE TABLE account(
        id INT PRIMARY KEY AUTO_INCREMENT,
        NAME VARCHAR(10),
        balance DOUBLE
        );
        --添加数据
        INSERT INTO account(NAME,balance)VALUES('Jack',1000),('Rose',1000);

API 介绍
在这里插入图片描述
开发步骤

1.获取连接
2.开启事务
3.获取到 PreparedStatement
4.使用 PreparedStatement 执行两次更新操作
5.正常情况下提交事务
6.出现异常回滚事务
7.最后关闭资源

  • 案例代码
package com.itheima;

import com.itheima.utils.JdbcUtils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class Demo12Transaction {
    //没有异常,提交事务,出现异常回滚事务
    public static void main(String[] args) {
        //1) 注册驱动
        Connection connection = null;
        PreparedStatement ps = null;
        try {
            //2) 获取连接
            connection = JdbcUtils.getConnection();
            //3) 开启事务
            connection.setAutoCommit(false);
            //4) 获取到 PreparedStatement
            //从 jack 扣钱
            ps = connection.prepareStatement("update account set balance = balance - ? where
                    name = ? ");
            ps.setInt(1, 500);
            ps.setString(2, "Jack");
            ps.executeUpdate();
            //出现异常
            System.out.println(100 / 0);
            //给 rose 加钱
            ps = connection.prepareStatement("update account set balance = balance + ? where
                    name = ? ");
            ps.setInt(1, 500);
            ps.setString(2, "Rose");
            ps.executeUpdate();
            //提交事务
            connection.commit();
            System.out.println("转账成功");
        } catch (Exception e) {
            e.printStackTrace();
            try {
                //事务的回滚
                connection.rollback();
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
            System.out.println("转账失败");
        } finally {
            //7) 关闭资源
            JdbcUtils.close(connection, ps);
        }
    }
}
发布了53 篇原创文章 · 获赞 56 · 访问量 1428

猜你喜欢

转载自blog.csdn.net/duwenyanxiaolaji/article/details/104060492