package com.iflysse.test07;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import jdbc_util.JdbcUtil01;
public class Day041301 {
public static void main(String[] args) {
zhuanzhang(1, 2, 500);
}
//将两个sql语句绑定为一个事务,必须是在同一个链接下面;
public static void zhuanzhang(int id1,int id2,int cm){
String sql1 = "update userinfo set money = money - ? where id =?";
String sql2 = "update userinfo set money = money + ? where id =?";
Connection conn = JdbcUtil01.getConnection();
try {
//手动关闭事务的自动提交
conn.setAutoCommit(false);
PreparedStatement pstat1 = conn.prepareStatement(sql1);
PreparedStatement pstat2 = conn.prepareStatement(sql2);
pstat1.setInt(1, cm);
pstat1.setInt(2, id1);
pstat2.setInt(1, cm);
pstat2.setInt(2, id2);
pstat1.executeUpdate();
//在两个操作之间设置异常,看看结果
// System.out.println(10/0);
pstat2.executeUpdate();
//手动的提交事务
conn.commit();
JdbcUtil01.close(null, pstat1, null);
JdbcUtil01.close(conn, pstat2, null);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
try {
//出现异常执行回滚的操作
conn.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
Jdbc的事务
最新推荐文章于 2022-06-19 20:22:16 发布