Jdbc的事务

来源:互联网 发布:我要找网络推广客户 编辑:程序博客网 时间:2024/06/04 19:44
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();            }        }    }}
0 0