• 技术文章 >java >java基础

    java之JDBC事务的应用

    小妮浅浅小妮浅浅2021-01-19 15:44:50原创2072

    我们在之前有提过JDBC,它是通过接口来实现对事务的使用的,是一种常见的处理事务方法。在了解了JDBC的一些基本概念后,想要对其进行具体的使用,还需要对隔离级别和执行事务的步骤有所掌握,这些要点我们会在接下来的内容中逐步分享,最后会带来JDBC使用的实例。

    1.JDBC对事务的支持

    JDBC 提供了5种不同的事务隔离级别,在 Connection 中进行了定义。

    TRANSACTION_NONE JDBC           驱动不支持事务
    TRANSACTION_READ_UNCOMMITTED    允许脏读、不可重复读和幻读。
    TRANSACTION_READ_COMMITTED      禁止脏读,但允许不可重复读和幻读。
    TRANSACTION_REPEATABLE_READ     禁止脏读和不可重复读,单运行幻读。
    TRANSACTION_SERIALIZABLE        禁止脏读、不可重复读和幻读。

    2.执行步骤

    (1)设置事务的提交方式为非自动提交:conn.setAutoCommit(false);

    (2)将需要添加事务的代码放入try,catch块中。

    (3)在try块内添加事务的提交操作,表示操作无异常,提交事务:conn.commit();尤其不要忘记,在catch块内添加回滚事务,表示操作出现异常,撤销事务:conn.rollback();(4)设置事务提交方式为自动提交:conn.setAutoCommit(true)。

    3.实例

        try (Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8","root", "admin");
            Statement s = c.createStatement();) {
     
            // 有事务的前提下
            // 在事务中的多个操作,要么都成功,要么都失败
     
            c.setAutoCommit(false);
     
            // 加血的SQL
            String sql1 = "update hero set hp = hp +1 where id = 22";
            s.execute(sql1);
     
            // 减血的SQL
            // 不小心写错写成了 updata(而非update)
     
            String sql2 = "updata hero set hp = hp -1 where id = 22";
            s.execute(sql2);
     
            // 手动提交
            c.commit();
     
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
     
    }

    以上就是java之JDBC事务的应用,学会了这种方法后,在遇到类似的事务问题时,我们就可以使用JDBC的方法来解决。学会了可以亲手体验代码部分内容。

    专题推荐:java jdbc事务
    上一篇:java声明式事务的三种方法 下一篇:java对象和json的来回转换

    相关文章推荐

    • Java Vector和ArrayList的异同分析• java中mybatis和hibernate的总结• 分页处理java多线程的数据• java标识符的基础使用• java事务的类型有哪几个• java声明式事务的三种方法

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网