package com.itheima.sh.transaction_04;
import util.DruidJdbcUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
/*
转账:jack给rose转500
分析:
jack - 500
rose + 500
Connection对象的方法名 描述
conn.setAutoCommit(false) 开启事务
conn.commit() 提交事务
conn.rollback() 回滚事务
*/
public class TransferDemo {
public static void main(String[] args) {
Connection connection = null;
PreparedStatement statement1 = null;
try {
//java操作mysql数据库
connection = DruidJdbcUtil.getConnection();
//开始一组操作之前就要开启事务
connection.setAutoCommit(false);
//注意:一组sql操作必须同时处于开启事务的连接中才能受控制
// jack - 500
String sql = "update account set money = money - ? where name = ?";
PreparedStatement statement = connection.prepareStatement(sql);
//输入参数
statement.setDouble(1,500);
statement.setString(2,"jack");
statement.executeUpdate();
// int i = 1/0;
// rose + 500
String sql1 = "update account set money = money + ? where name = ?";
statement1 = connection.prepareStatement(sql1);
statement1.setDouble(1,500);
statement1.setString(2,"rose");
statement1.executeUpdate();
//如果程序能够正确执行完毕加钱的操作,那么说明转账成功
connection.commit();
System.out.println("转账成功");
} catch (Exception e) {
// e.printStackTrace();
System.out.println("转账失败");
try {
//如果程序执行出现异常,那么说明转账失败
connection.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
}finally {
DruidJdbcUtil.release(null,statement1,connection);
}
}
}
jdbc中的事务操作(重点)
最新推荐文章于 2023-07-19 12:01:53 发布