如何快速学习:[1]Swift编程语言,Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Ojective-C*共同运行于MacOS和iOS平台,用于搭建基于苹果平台的应用程......
2023-03-17 297 编程语言
JDBC事务详解实例
1.事务,简单来说就是要死一起死要活一块活,共同进退,体现在数据操作上就是批量操作。
首先新建testTransaction.java 单元测试类
2.在做事务之前呢,先看下数据库数据,我们以7,8条数据为例
3.我们想把7,8条数据(同时,注意是同时)更新为shiwu1 shiwu2, 没用事务之前代码如下:
4.执行单元测试,输出如下,通过日志我们看到两条SQL都被执行掉了
5.查看数据库数据,的确已经更新了
6.但当代码中间出现异常,会怎样? 我先人为的插入一段异常代码,同时我们想把7,8,条数据更新为 shiwu3 shiwu4
7.执行单元测试,发现失败了,但是从日志中看到第一条SQL执行了
8.查看数据库数据发现,7条记录正常更新了,8条记录没有变化,这显然跟我们预期的不一样(我们想要的效果是同时变化或者同时不变化)
9.这就要用到事务了,而事务的前提就是 操作必须发生在同一条数据库链接下的,而我们上边使用的Dao方法中的update则是每次执行都要获取下connection,显然两条SQL不是在同一条数据库连接下的。
接下来我们修改update方法
注意,这里不能关闭connection,而是交给调用它的方法去关闭。
10.修改上边代码如下:把两条SQL的执行放在一个conn连接之下
11.填写事务代码,现在执行的话,肯定可以更新
12.接下来添加日志和中间的异常。
13.单元测试执行结果,发现第一条SQL执行完毕了,但是后来出现异常,又回滚了
14.数据库是什么样子呢?没有变化,说明我们前边的操作都被回滚掉了
15.总结事务的步骤如下:
以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!
标签: 编程语言
相关文章
如何快速学习:[1]Swift编程语言,Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Ojective-C*共同运行于MacOS和iOS平台,用于搭建基于苹果平台的应用程......
2023-03-17 297 编程语言
web图表开发工具FineReport:[11]连续分组,数据库表数据是按照时间先后录入的,查询的时候希望按照时间先后,某个字段连续相同的话就合并起来显示,这样的报表可以通过相邻连续分组来实现。......
2023-03-17 520 编程语言