1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
| package _24_事务自动提交;
import java.sql.*;
public class 银行转账演示事务 { public static void main(String[] args) { Connection conn = null; PreparedStatement ps = null; ResultSet res = null; try { Class.forName("com.mysql.cj.jdbc.Driver"); conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/sunlie", "root", "root" ); conn.setAutoCommit(false);
String sql; int count = 0; sql = "update t_act set balance = ? where actno = ?"; ps = conn.prepareStatement(sql); ps.setDouble(1, 10000); ps.setInt(2,111); count += ps.executeUpdate();
ps.setDouble(1, 10000); ps.setInt(2, 222); count += ps.executeUpdate();
System.out.println(count == 2? "转账成功" : "转账失败");
conn.commit();
} catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { if (conn != null) { try { conn.rollback(); } catch (SQLException ex) { ex.printStackTrace(); } } e.printStackTrace(); } finally { if (res != null) { try { res.close(); } catch (SQLException e) { e.printStackTrace(); } } if (ps != null) { try { ps.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }
|