8.24 事务处理

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Calendar;

import com.gem.demo.util.JDBCUtil;

/**
 *
 * Title: Demo03
 *
 * Description: 
 * JDBC事务
 * @version v0.01
 *
 * @author ByChai
 *
 * @date 2020年8月24日 下午2:23:25
 *
 *
 */
public class Demo03 {
        public static void main(String[] args) {
            Connection conn=null;
            PreparedStatement psmt=null;
            try {
                conn=JDBCUtil.getConnection();
                //取消事务自动提交
                conn.setAutoCommit(false);
                //转账  账户1-->账户2  转账500
                String sql="update account set balance=balance-? where username=? and pwd=?";
                psmt=conn.prepareStatement(sql);
                //账户1   甲账户 扣款500
                psmt.setDouble(1, 500);
                psmt.setString(2, "10001");
                psmt.setString(3, "123456");
                psmt.executeUpdate();
                
                //模拟灾难发生
                zainanlailing();
                //账户2  乙账户  收到500
                psmt.setDouble(1, -500);
                psmt.setString(2, "10002");
                psmt.setString(3, "123123");
                psmt.executeUpdate();
                //提交事务
                conn.commit();
                
            } catch (Exception e) {
                if(conn!=null) {
                    try {
                        //事务回滚 Connection 
                        conn.rollback();
                    } catch (SQLException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
                }
            }
        }
        
        public static void zainanlailing() {
            //获取当前秒数
            Calendar c=Calendar.getInstance();
            //如果当前时间秒数>30  表示有灾难发生  抛异常  throw
            int second=c.get(Calendar.SECOND);
            if(second>30) {
                //触发异常
                System.out.println("有异常");
                throw new RuntimeException("灾难降临。。。");
            }
        }
}

事务处理

原文地址:https://www.cnblogs.com/Guang09/p/13553913.html