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

来源:互联网 发布:远程摄像头监控软件 编辑:程序博客网 时间:2024/06/10 03:32

事务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();    }}
0 0
原创粉丝点击