事务

事务基本概念

一组要么同时执行成功,要么同时执行失败的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();
}

最新文章

  1. Beginner's Guide to Python-新手指导
  2. css实现div的高度填满剩余空间
  3. XML.04-dom4j和XPath
  4. Effective STL(第7条)
  5. 转:Oracle表分区
  6. 与众不同 windows phone (37) - 8.0 文件系统: StorageFolder, StorageFile, 通过 Uri 引用文件, 获取 SD 卡中的文件
  7. redhat RHEL 5.5 下载地址
  8. sqlserver模糊查询【转】
  9. UVa 11624 (BFS) Fire!
  10. XE5 安装破解
  11. XAMPP on Mac 组态 Virual Host
  12. 令人眼前一亮的下拉式终端 Tilda & Guake
  13. Hot Research Topics
  14. mycat 1.6 简单的操作实例
  15. 啰嗦的 java,简洁的 lombok —— lombok 的使用及简单实现单例模式注解
  16. EL和 JSTL? 在JSP中简化 java代码的写法!
  17. 元组tuple 可迭代对象
  18. Django框架简介-模板系统
  19. 使用Eclipse出现make: *** No rule to make target `all'. Stop.解决办法
  20. python中split()、os.path.split()函数用法

热门文章

  1. 15分钟从零开始搭建支持10w+用户的生产环境(二)
  2. NCTF2019 小部分题解
  3. 【考试总结】欢乐模拟赛_Day1
  4. C++创建动态库
  5. radio样式
  6. python 利用numpy同时打乱列表的顺序,同时打乱数据和标签的顺序
  7. JDBC 进阶:使用封装通用DML DQL 和结构分层以及at com.mysql.jdbc.PreparedStatement.setTimestamp空指针异常解决
  8. C#线程学习笔记
  9. 关于搭建IIS网页弹出登录框的解决方案
  10. Libra教程之:数据结构和存储