jdbc事务控制

1、事务的概念:
事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACID(原子性、一致性、隔离性和持久性)属性。

事务就是做事情的一个过程,简单来说,喝水【拧开杯子,喝水,盖上杯子】,
这个过程不可拆分。

这个概念被广泛应用到软件开发, 特别是数据库应用是最多的, 简单来说就是在执行多个更新SQL的时候,我们必须保证所有的SQL都成功才提交数据库的数据,否则回滚数据库数据,

步骤1:关闭数据库自动提交事务,在sql正常执行之后手动提交事务
步骤2:在异常处理的catch里面捕获异常,并且回滚事务
步奏3:打开数据库自动提交事务

public void zhuanzhang() {
        int result = 0;
        Connection conn = null;
//      PreparedStatement pre = null;
        Statement sta = null;

        String sql1 = "update account set sal = sal + 100 where id = 1";
        String sql2 = "update account set sal = sal - 100 where id = 2";

        try {
            conn = DBUtils.getConn();
            conn.setAutoCommit(false); //关闭自动提交
            sta = conn.createStatement();

            //执行第一个sql
            sta.executeUpdate(sql1);
            int num = 9/0;
            sta.executeUpdate(sql2);

            conn.commit();  //手动提交事务
            conn.setAutoCommit(true); //开启自动提交


        } catch (Exception e) {
            try {
                conn.rollback();  //回滚事务
            } catch (SQLException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }  //回滚到远点
            e.printStackTrace();
        } finally {
            DBUtils.closeDB(conn, sta, null);
        }

    }

所以对于数据库来说,事务实际上是指的我们我们对于关联操作的一个要门同时失败,要么同时成功的逻辑处理,

猜你喜欢

转载自blog.csdn.net/sky274548769/article/details/80916571