事务
要么都成功,要么都失败。
在一个事件中的事:从通知开启事务,到提交事务之间,任何一句语句有错误,则哪一句语句都不应该提交。
1、事务的几个状态
1、开启事务
2、事务提交 commit()。在做事务提交和回滚前,关键的头尾是:(1)通知开启事务,false是开启(connection.setAutoCommit(false);) (2)提交或回滚(提交写在try部分,回滚写在catch中)
3、事务回滚 rollback()。事务一旦提交(commit)了,就无法回滚(rollback)了。所以,应该在提交之前判断,如果崩了就不要提交,直接回滚。
4、关闭事务
转账:
A:1千块
B:1千块
A --> B: A(900)、B(1100)
不能出现A转给了B100块钱,A成为900,但是系统崩溃了,B还没收到100块钱,出现了A900块钱,B1000块钱的情况。
1、搭建环境,进行测试
1 Create TABLEaccount(2 id INT PRIMARY KEYauto_increment,3 `name` VARCHAR(40),4 money FLOAT
5 );6 INSERT INTO account(`name`,money) VALUES ('A',1000);7 INSERT INTO account(`name`,money) VALUES ('B',1000);8 INSERT INTO account(`name`,money) VALUES ('C',1000);
View Code
2、项目构成
1、建的普通Maven项目(不用模板)
2、在java下建con.wang.utils文件夹,并在该文件夹下建两个class文件。
3、两个class文件中,一个是JDBC的工具类(JdbcUtils),公共的资源配置放在这;另一个是具体的操作数据库的类(Test_jdbc)
4、连接数据库的用户名,密码,数据库驱动和url都放在resources下的db.properties文件夹中。