java之JDBC事务的应用

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

1.JDBC对事务的支持

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

TRANSACTION_NONEJDBC驱动不支持事务
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(Connectionc=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8","root","admin");
Statements=c.createStatement();){

//有事务的前提下
//在事务中的多个操作,要么都成功,要么都失败

c.setAutoCommit(false);

//加血的SQL
Stringsql1="updateherosethp=hp+1whereid=22";
s.execute(sql1);

//减血的SQL
//不小心写错写成了updata(而非update)

Stringsql2="updataherosethp=hp-1whereid=22";
s.execute(sql2);

//手动提交
c.commit();

}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}

}

原文来自:https://www.py.cn

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容