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();
}
}
}