JDBC事务控制

1 篇文章 0 订阅

什么是事务
张三给李四转账1000元
1张三转出1000
2李四转入1000
以上两步 要么同时成功 要么同时失败 这两步是不能分割的
数据库操作逻辑上不可分割的多条sql语句组成的整体 该整体中所有的sql语句要么全部成功 要么全部失败
通过关键字: rollback ,commit来控制

事务的特性
1原子性  事务是最小的单位 不能继续分割
2一致性  事务提交之前和提交之后 数据要保持一定的一致性
3持久性  事务一旦提交 那么数据就不可以恢复,会持久的保存在硬盘中
4隔离性  多个事务同时操作同一个数据的时候,那么多个事务之间要进行隔离
		张三给李四转账1000   2000
		李四给王五转账1000
		--事务的隔离级别参照一下链接
		https://www.cnblogs.com/huanongying/p/7021555.html

在数据库中创建一张表
account表
id username password money
int varchar varchar double

create table account(
id int primary key auto_increment,
username varchar(20),
password varchar(20),
money double
);
insert into account values(null,‘user1’,‘123456’,10000);
insert into account values(null,‘user2’,‘654321’,10000);

事务控制实现代码
public class TestTransaction {
public static void main(String[] args) throws Exception {
Class.forName(“com.mysql.jdbc.Driver”);//反射获得加载驱动
Connection conn=DriverManager.getConnection(“jdbc:mysql://127.0.0.1:3306/mydb1”,“root”,“root”);//获得数据库连接
//设置事务手动提交
conn.setAutoCommit(false);
Statement stat = conn.createStatement();
try {
//1张三转出1000
stat.executeUpdate(“update account set money = money -1000 where id =1”);
System.out.println(1/0);
//2李四转入1000
stat.executeUpdate(“update account set money = money +1000 where id =2”);
} catch (Exception e) {
//回滚事务
conn.rollback();
e.printStackTrace();
}finally{
//手动提交事务
conn.commit();
}
stat.close();
conn.close();
System.out.println(“执行结束”);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值