JDBC编程之事务的使用教程
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5868750.html
关于事务的理论知识、ACID特性等等,网上太多了,在此不一一重复。本文主要着重 事务 这个工具在实际编程中是怎么实现的。
在MySQL命令行的默认设置下,事务都是自动提交的,即执行SQL语句后就会马上执行COMMIT操作,每一个SQL语句都被认为是一个完整的事务处理。
而我们想要实现事务,即:执行多句SQL语句,再最终一起提交或在出错时撤销(SQL语句要么提交,要么撤销。提交则对数据库造成永久性的影响,撤销则事务内的sql语句相当于没有执行)。
那么我们要做的就是:取消掉每一个SQL语句执行后自动提交这个属性,并设立一个开关(commit())执行一些列语句的同一提交操作。
取消SQL语句自动提交的方法有:
con.setAutoCommit(false):取消自动提交。则从此处开始,下面的一系列SQL语句除非遇到commit()命令,都不提交。
具体的JDBC编程中事务的应用步骤如下:
1) JDBC对事务的管理交由Connection,都是由Connection的对象方法实现的;
2) 首先关闭自动提交,开启事务:void Connection.setAutoCommit(false); // false表示关闭自动提交
3) 然后就是事务中包含的一系列SQL语句
4) 提交事务:con.commit(); // 显式提交
5) 回滚:如果在事务执行过程中出错(用try-catch语句捕捉),则在错误处理语句中显式回滚:con.rollback();
6) 中间点:一般的事务回滚是回滚到事务开始之前,但是也可以只回滚到事务中的某个中间点。
设置中间点
i. Savepoint Connection.setSavepoint(); // 在事务的某个位置设置一个中间点,该中间点没有命名,使用系统默认的命名
ii. Savepoint setSavepoint(String name); // 给中间点命名
iii. 回滚到指定的中间点:connection.rollback(Savepoint savepoint); // 回滚到指定的中间点
代码样例:
try {
conn.setAutoCommit(false);
String sql1="。。。";
stmt.executeUpdate(sql);
String sql2="。。。";
stmt.executeUpdate(sq2);
String sql3="。。。";
stmt.executeUpdate(sq3);
conn.commit();
} catch (Exception e) {
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) { e1.printStackTrace();
}
最新文章
- ASP.NET MVC原理
- C++中typename和class的区别
- 日志分析 第一章 ELK介绍
- 设计模式之 -- 状态模式(State)
- poj3259 bellman——ford Wormholes解绝负权问题
- NS实现采用的技术大多是PHP,如果采用java、 .net是否同样适用?
- 线性表之顺序存储结构(C语言动态数组实现)
- 细聊 Cocoapods 与 Xcode 工程配置
- linux 下编译安装php
- Delphi一共封装(超类化)了8种Windows基础控件和17种复杂控件
- UVA11080- Place the Guards(二分图染色)
- Angular - - angular.equals
- JPA继承方式
- js 两个日期比较相差多少天
- 探索C++多态和实现机理
- [PHP]命令执行函数的区别
- 捕获未处理的Promise错误
- oracle项目案例脚本
- MySQL数据库分区操作【RANGE】
- 更适合程序员使用的Vim配置 显示行号 语法高亮 智能缩进
热门文章
- Android让手机主动亮屏的代码
- 完美解决Invalid layout of java.lang.String at value问题的方法
- Eclipse中的特殊注释:TODO、XXX、FIXME
- HttpContext.Current.Session 和 Session 的区别
- ip_conntrack参数
- 使用idea 在springboot添加本地jar包的方法 部署的时候本地jar没有包含的解决方法
- Three.js中如何显示帧速【转】
- Populating Next Right Pointers in Each Node leetcode java
- 跨平台APP----对Cordova,APPCan,DCloud,APICloud四大平台的分析
- js命名空间写法