码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA学习笔记(五十四)- 事务Transaction与批处理

时间:2015-04-05 10:38:19      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:transaction   事务   批处理   引擎   

事务Transaction


/*
 * 事务Transaction
 * JDBC默认开启自动提交事务,需要关闭,才能手动控制事务
 * 
 * 默认MySQL存储引擎为My...,其不支持事务处理,修改为InnoDB引擎
 * create table 表名(  ) engine=InnoDB default charset=utf8;
 * 
 * InnoDB引擎默认关闭自动事务提交,修改MySQL为自动提交事务
 * set autocommit=1;  //1表示自动提交,0表示关闭自动提交
 * show variables like ‘autocommit‘;
 */
public class Test01 {
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        conn = DBUtil.getConnection();
        try {
            conn.setAutoCommit(false);//关闭自动提交事务,手动控制事务
            String sql = "insert into user values (null,‘eee‘,‘123‘)";
            pstmt = conn.prepareStatement(sql);
            pstmt.executeUpdate(); //插入第一个用户

            String sql2="insert into user values (‘fff‘,‘123‘)";
            pstmt=conn.prepareStatement(sql2);
            pstmt.executeUpdate();//插入第二个用户
            conn.commit();//提交事务
            System.out.println("插入用户成功!");
        } catch (SQLException e) {
            System.out.println("出现异常,回滚事务");
            try {
                conn.rollback();//回滚事务
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
        } finally {
            DBUtil.closeAll(rs, pstmt, conn);
        }
    }
}

批处理



/*
 * 批处理
 */
public class Test02 {
    Connection conn = null;
    Statement stmt = null;
    PreparedStatement pstmt=null;
    ResultSet rs = null;

    public void test01() {
        try {
            conn = DBUtil.getConnection();
            stmt = conn.createStatement();
            // 添加批处理语句
            stmt.addBatch("insert into user values (null,‘s001‘,‘123‘)");
            stmt.addBatch("insert into user values (null,‘s002‘,‘123‘)");
            stmt.addBatch("insert into user values (null,‘s003‘,‘123‘)");
            // 执行批处理
            int[] nums = stmt.executeBatch();
            System.out.println(Arrays.toString(nums));
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtil.closeAll(rs, stmt, conn);
        }
    }

    public void test02() {
        try {
            conn = DBUtil.getConnection();
            conn.setAutoCommit(false);
            pstmt=conn.prepareStatement("insert into user values (null,?,?)");
            // 添加批处理语句
            pstmt.setObject(1, "t001");
            pstmt.setObject(2, "123");
            pstmt.addBatch();
            pstmt.setObject(1, "t002");
            pstmt.setObject(2, "123");
            pstmt.addBatch();
            pstmt.setObject(1, "t003");
            pstmt.setObject(2, "123");
            pstmt.addBatch();
            // 执行批处理
            int[] nums=pstmt.executeBatch();
            System.out.println(Arrays.toString(nums));
            conn.commit();
        } catch (SQLException e) {
            try {
                conn.rollback();
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
            e.printStackTrace();
        } finally {
            DBUtil.closeAll(rs, stmt, conn);
        }
    }

    public static void main(String[] args) {
        Test02 test = new Test02();
        test.test02();
    }
}

JAVA学习笔记(五十四)- 事务Transaction与批处理

标签:transaction   事务   批处理   引擎   

原文地址:http://blog.csdn.net/wangzi11322/article/details/44885733

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!