zoukankan      html  css  js  c++  java
  • 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("灾难降临。。。");
                }
            }
    }

    事务处理

  • 相关阅读:
    轮廓 | outline (Basic User Interface)
    转换 | CSS Transitions (Animations & Transitions)
    越线 | line-break (Text)
    贴士和技巧 | CSS Animations: Tips (Animations & Transitions)
    负 | @counter-style.negative (Counter Styles)
    调整 | resize (Basic User Interface)
    再见乱码:5分钟读懂MySQL字符集设置
    git
    Python 内存&函数调用关系图
    Python 笔记
  • 原文地址:https://www.cnblogs.com/Guang09/p/13553913.html
Copyright © 2011-2022 走看看