mysql学习16 ( JDBC操作事务 )
2022/3/20 19:30:12
本文主要是介绍mysql学习16 ( JDBC操作事务 ),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
mysql学习16
-
JDBC操作事务:
-
事务:要么都成功,要么都失败;
-
ACID原则:
-
原子性:要么都完成,要么都不完成
-
一致性:总数不变
-
隔离性:多个进程互不干扰
-
持久性:一旦提交不可逆,持久化到数据库
-
-
隔离性会产生问题:
-
脏读:一个事务读取了另一个没有提交的事务;
-
不可重复读:在同一个事务内,重复读取表中数据,表数据发生了改变;(每次读取不一样)
-
幻读:在一个事务内,读取到了别人插入的数据,导致前后读取出来的结果不一样(读者读者变多了)
-
-
-
代码案例:
-
开启事务;
-
一组业务执行完毕,提交事务;
-
可以在catch语句中,显式定义回滚语句,但是默认就会回滚;
/** * 测试JDBC操作事务: * */ public class TestDemo01 { public static void main(String[] args) { Connection conn =null; PreparedStatement st=null; ResultSet rs=null; try { conn= JdbcUtils.getConnection();//获取连接 /** * 操作事务: * 1,关闭数据库的自动提交功能; * 2,业务完毕,提交事务 * 3,如果失败,就回滚事务 */ conn.setAutoCommit(false);//1,关闭数据库的自动提交功能;会自动开启事务 String sql1="update account set money=money-100 where name='A'"; st=conn.prepareStatement(sql1); st.executeUpdate();//执行1 int x=1/0;//报错 String sql2="update account set money=money+100 where name='B'"; st=conn.prepareStatement(sql2); st.executeUpdate();//执行2 //业务完毕,提交事务 conn.commit(); System.out.println("成功"); } catch (SQLException e) { try { System.out.println("失败,回滚事务"); conn.rollback();//如果失败,就回滚事务;不写也会默认回滚 } catch (SQLException ex) { ex.printStackTrace(); } e.printStackTrace(); }finally { JdbcUtils.release(conn,st,rs); } } }
-
这篇关于mysql学习16 ( JDBC操作事务 )的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-25如何部署MySQL集群资料:新手入门教程
- 2024-12-24MySQL集群部署资料:新手入门教程
- 2024-12-24MySQL集群资料详解:新手入门教程
- 2024-12-24MySQL集群部署入门教程
- 2024-12-24部署MySQL集群学习:新手入门教程
- 2024-12-24部署MySQL集群入门:一步一步搭建指南
- 2024-12-07MySQL读写分离入门:轻松掌握数据库读写分离技术
- 2024-12-07MySQL读写分离入门教程
- 2024-12-07MySQL分库分表入门详解
- 2024-12-07MySQL分库分表入门指南