Jdbc的事务

package com.iflysse.test07;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import jdbc_util.JdbcUtil01;

public class Day041301 {
    public static void main(String[] args) {
        zhuanzhang(1, 2, 500);
    }
    //将两个sql语句绑定为一个事务,必须是在同一个链接下面;
    public static void zhuanzhang(int id1,int id2,int cm){
        String sql1 = "update userinfo set money = money - ? where id =?";
        String sql2 = "update userinfo set money = money + ? where id =?";
        Connection conn = JdbcUtil01.getConnection();
        try {
            //手动关闭事务的自动提交
            conn.setAutoCommit(false);
            PreparedStatement pstat1 = conn.prepareStatement(sql1);
            PreparedStatement pstat2 = conn.prepareStatement(sql2);     

            pstat1.setInt(1, cm);
            pstat1.setInt(2, id1);  

            pstat2.setInt(1, cm);
            pstat2.setInt(2, id2);  

            pstat1.executeUpdate();     
            //在两个操作之间设置异常,看看结果
        //  System.out.println(10/0);               
            pstat2.executeUpdate();

            //手动的提交事务
            conn.commit();      
            JdbcUtil01.close(null, pstat1, null);
            JdbcUtil01.close(conn, pstat2, null);

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();

            try {
                //出现异常执行回滚的操作
                conn.rollback();
            } catch (SQLException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
    }
}

你可能感兴趣的:(Jdbc的事务)