JDBC事物的处理:
概念:事务是指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功。
数据库开启事务命令:
start transaction 开启事务
Rollback 回滚事务
Commit 提交事务
事物的使用:
JDBC控制事务语句
Connection.setAutoCommit(false); // 相当于mysql语句的start transaction
Connection.rollback(); // 相当于mysql语句的 rollback
Connection.commit(); // 相当于mysql语句的 commit
-----------------------------------------------------------------------------------
代码如下:
1 package com.aaa.demo1; 2 3 4 import com.aaa.demo.JdbcUtils; 5 6 import java.sql.Connection; 7 import java.sql.PreparedStatement; 8 import java.sql.SQLException; 9 10 public class DemoTranscation { 11 public static void main(String[] args) { 12 Connection conn = null; 13 PreparedStatement ps = null; 14 // 1 获取链接 15 try { 16 conn = JdbcUtils.getConnectio(); 17 //2 开启事物 18 conn.setAutoCommit(false); 19 // 3 获取PreparedStatement 20 ps = conn.prepareStatement("UPDATE count SET money = money-? WHERE cname =?"); 21 22 23 // 4 使用PreparedStatement 两次更新操作 24 ps.setDouble(1, 500); 25 ps.setString(2, "樱花落"); 26 ps.executeUpdate(); 27 System.out.println(111 / 0); 28 ps = conn.prepareStatement("UPDATE count SET money = money+? WHERE cname =?"); 29 ps.setDouble(1, 500); 30 ps.setString(2, "洛天依"); 31 ps.executeUpdate(); 32 //提交事物 33 34 // System.out.println("转账成功"); 35 //conn.commit(); 36 37 } catch (Exception e) { 38 //事物回滚 39 try { 40 conn.rollback(); 41 } catch (SQLException e1) { 42 e1.printStackTrace(); 43 } 44 System.out.println("转账失败"); 45 } finally { 46 //关资源 47 JdbcUtils.close( conn,ps); 48 49 } 50 51 } 52 }