JDBC07 事务
2024-10-09 02:42:13
事务
事务基本概念
一组要么同时执行成功,要么同时执行失败的SQL语句,是数据库操作的一个执行单元(比如:银行中,对账户的操作和日志的记录是一组事务)
事务开始于:
-连接到数据库上,并执行一条DML语句(INSERT、UPDATE或DELETE)
-前一个事务结束后,又输入了另外一条DML语句
事务结束于:
-执行COMMINT或ROLLBACK语句
-执行一条DDL语句,例如CREAT TABLE语句;在这种情况下,会自动执行COMMIT语句
-断开与数据库的连接
-执行了一条DML语句,该语句却失败了;在这种情况中,会为这个无效的DML语句执行ROLLBACK语句
事务的四大特点(ACID):
atomicity(原子性):表示一个事务内所有的操作是一个整体,要么全部成功,要么全部失效
consistency(一致性):表示一个事务内有一个操作失败时,所有的更改过的数据都必须回滚到修改前的状态
isolation(隔离性):事务查看数据时数据所处的状态,要么是另一并发事务修改前他的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据
(事务隔离级别从低到高:(读取未提交Read Uncommitted,读取已提交Read Commintted,可重复读Repeatable Read,序列化serializable))
durability(持久性):持久性事务完成之后,它对于系统的影响是永久的
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/testjdbc?&useSSL=false&serverTimezone=UTC"
,"root","123456"); conn.setAutoCommit(false);//默认为true
ps1=conn.prepareStatement("insert into t_user (username,pwd) values (?,?)");
ps1.setObject(1, "zhang");
ps1.setObject(2,666);
ps1.execute();
System.out.println("插入一条记录"); try {
Thread.sleep(6000);
} catch (InterruptedException e) {
e.printStackTrace();
}
ps2=conn.prepareStatement("insert into t_user (username,pwd) values(?,?,?)");//故意出错
ps2.setObject(1, "sun");
ps2.setObject(2,123);
ps2.execute();
System.out.println("又插入一条记录");
conn.commit();//不太明白回滚,似乎是没有执行提交来着
} catch (ClassNotFoundException e) {
e.printStackTrace();
try {
conn.rollback();//回滚
} catch (SQLException e1) {
e1.printStackTrace();
}
最新文章
- Beginner's Guide to Python-新手指导
- css实现div的高度填满剩余空间
- XML.04-dom4j和XPath
- Effective STL(第7条)
- 转:Oracle表分区
- 与众不同 windows phone (37) - 8.0 文件系统: StorageFolder, StorageFile, 通过 Uri 引用文件, 获取 SD 卡中的文件
- redhat RHEL 5.5 下载地址
- sqlserver模糊查询【转】
- UVa 11624 (BFS) Fire!
- XE5 安装破解
- XAMPP on Mac 组态 Virual Host
- 令人眼前一亮的下拉式终端 Tilda &; Guake
- Hot Research Topics
- mycat 1.6 简单的操作实例
- 啰嗦的 java,简洁的 lombok —— lombok 的使用及简单实现单例模式注解
- EL和 JSTL? 在JSP中简化 java代码的写法!
- 元组tuple 可迭代对象
- Django框架简介-模板系统
- 使用Eclipse出现make: *** No rule to make target `all'. Stop.解决办法
- python中split()、os.path.split()函数用法
热门文章
- 15分钟从零开始搭建支持10w+用户的生产环境(二)
- NCTF2019 小部分题解
- 【考试总结】欢乐模拟赛_Day1
- C++创建动态库
- radio样式
- python 利用numpy同时打乱列表的顺序,同时打乱数据和标签的顺序
- JDBC 进阶:使用封装通用DML DQL 和结构分层以及at com.mysql.jdbc.PreparedStatement.setTimestamp空指针异常解决
- C#线程学习笔记
- 关于搭建IIS网页弹出登录框的解决方案
- Libra教程之:数据结构和存储