开启事务(关闭自动提交就默认开启事务)
conn.setAutoCommit(false);
可以在catch写回滚,但事务失败就默认回滚
catch (SQLException e) { // 若事务提交失败,自动回滚 // try { // conn.rollback(); // } catch (SQLException throwables) { // throwables.printStackTrace(); // }
成功的:
package com.esd.demo03; import com.esd.utils.JdbcUtils; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; public class jdbc事务 { public static void main(String[] args) { Connection conn = null; PreparedStatement pre = null; try{ conn = JdbcUtils.getConnection(); //关闭数据库自动提交,自动开启事务 conn.setAutoCommit(false); String sql1="UPDATE `account`set money=money-100 where id='1'"; pre = conn.prepareStatement(sql1); pre.executeUpdate(); String sql2="UPDATE `account`set money=money+100 where id='2'"; pre = conn.prepareStatement(sql2); pre.executeUpdate(); // 关闭事务 conn.commit(); System.out.println("提交成功"); } catch (SQLException e) { // 若事务提交失败,自动回滚 // try { // conn.rollback(); // } catch (SQLException throwables) { // throwables.printStackTrace(); // } e.printStackTrace(); }finally { JdbcUtils.release(conn,pre,null); } } }
失败:
package com.esd.demo03; import com.esd.utils.JdbcUtils; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; public class failed { public static void main(String[] args) { Connection conn = null; PreparedStatement pre = null; try{ conn = JdbcUtils.getConnection(); //关闭数据库自动提交,自动开启事务 conn.setAutoCommit(false); String sql1="UPDATE `account`set money=money-100 where id='1'"; pre = conn.prepareStatement(sql1); pre.executeUpdate(); int x=1/0;//报错,0不能被除,事务失败 String sql2="UPDATE `account`set money=money+100 where id='2'"; pre = conn.prepareStatement(sql2); pre.executeUpdate(); // 关闭事务 conn.commit(); System.out.println("提交成功"); } catch (SQLException e) { // 若事务提交失败,自动回滚 // try { // conn.rollback(); // } catch (SQLException throwables) { // throwables.printStackTrace(); // } e.printStackTrace(); }finally { JdbcUtils.release(conn,pre,null); } } }
本文来自博客园,作者:阿霖找BUG,转载请注明原文链接:https://www.cnblogs.com/lin-07/articles/16296744.html
浙公网安备 33010602011771号