JDBC更新數據
數據的更新是一個很常見的需求, 並且在數據的更新的時候極可能會要考慮到事務的原子性,
一個事務中多個操做要拿都成功要麼都失敗.sql
Demo: SCOTT 轉帳給 JAMES 100元spa
1 public class TestMysql { 2 //取得鏈接 3 private static Connection conn =ConnectionUitl.getConnection(); 4 5 public static void main(String[] args) { 6 updateDeposit(100.0); 7 } 8 9 public static int updateDeposit(Double deposit) { 10 String sql1 = "UPDATE emp SET deposit = deposit-"+deposit+"WHERE ename='SCOTT'"; 11 String sql2 = "UPDATE emp SET deposit = deposit+"+deposit+"WHERE ename='JAMES'"; 12 13 //獲取發送 sql 語句的對象 14 try { 15 //取消事務的自動提交 16 conn.setAutoCommit(false); 17 PreparedStatement pst1 = conn.prepareStatement(sql1); 18 PreparedStatement pst2 = conn.prepareStatement(sql2); 19 //執行 sql 語句 20 pst1.executeUpdate(); 21 pst2.executeUpdate(); 22 //提交事務 23 conn.commit(); 24 return 2; 25 } catch (Exception e) { 26 try { 27 conn.rollback(); 28 } catch (SQLException e1) { 29 e1.printStackTrace(); 30 } 31 e.printStackTrace(); 32 } finally { 33 ConnectionUitl.close(conn); 34 } 35 return 0; 36 } 37 }