Mysql数据库事务简单操作(转账)

package com.qfedu.a_druid;

import com.qfedu.util.JdbcUtil;

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

//事务操作的讲解
public class Demo3 {
    public static void main(String[] args) throws SQLException {
        Connection connection = JdbcUtil.getConnection();
        try {
            //1.开启事务
            connection.setAutoCommit(false);//把自动提交关闭
            //2.编写sql语句
            //money=money+?   等号右边的money是数据库原有的值
            String sql = "update bank_sys set money=money+? where name=?";

            //减钱   张三的账户减钱  200
            PreparedStatement preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setObject(1, -200);
            preparedStatement.setObject(2, "张三");
            int i = preparedStatement.executeUpdate();

            //突然这个地方有异常了
            int i2 =  1/0;//这个是异常代码
            //整体的所有sql语句都是在一个事务当中。这两个sql语句都在一个事务中
            //y一荣俱荣,一损俱损。只有你有哪一个sql语句没有执成功。那么其他sql语句也就不会成功。
            //一致性 加上事务以后要么同时成功,要么同时失败!!!事务更加安全些!!!
            //ssm 使用AOP进行事务的操作,是因为在配置文件中直接写事务,让咱们的代码更加健壮些!!!

            //增钱  李四的账户增加钱200
            preparedStatement.setObject(1, 200);
            preparedStatement.setObject(2, "李四");
            int i1 = preparedStatement.executeUpdate();
            //如果没有错误的话,就提交上面的执行的两次sql语句
            connection.commit();//事务的提交


        }catch (Exception e){
            //回滚
            connection.rollback();
        }finally {
            connection.setAutoCommit(true);
            connection.close();
        }
    }
}

posted @ 2021-09-01 19:17  张三疯321  阅读(286)  评论(0编辑  收藏  举报