jdbc 事物 commit 和rollback方法
package transaction; import jdbc.utils.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException; /*
* 1.一个事物里的操作要么都执行,要么都不执行
* 事物:一个或多个DML操作
* 2.事物处理原则:所有操作都完成时被commit,使修改永久保存
* 反之放弃所有操作,事物rollback到最初状态
* 3.提交后就不可回滚
* 4.DDL一旦执行,就会自动提交
* 5.DML默认自动提交,但是可以set autocommit = false 进行设置
* 6.默认在关闭连接时会自动提交数据
* */
public class TransactionTest { public static int update(Connection con,String sql,Object...args) {
PreparedStatement ps = null;
try {
ps=con.prepareStatement(sql);
for(int i=;i<args.length;i++)
ps.setObject(i+, args[i]);
return ps.executeUpdate();
}
catch(Exception ex) {
ex.printStackTrace(); }
finally {
JDBCUtils.closeResource(null, ps);
}
return ;
} //要保证几个DML操作作为一个整体出现,要么都做,要么都不做
public static void testUpdateWithTx() {
Connection con = null;
try {
con = JDBCUtils.getConnection();
System.out.println(con.getAutoCommit());
//取消数据的自动提交来对应中间的异常
con.setAutoCommit(false); String sql = "update blank set money = money-100 where blankId = ?";
update(con,sql,); //System.out.println(10/0);//模拟网络异常 sql = "update blank set money = money+100 where blankId = ?";
update(con,sql,); System.out.println("转账成功");
con.commit();
}
catch(Exception ex) {//出现异常就必须rollback
ex.printStackTrace();
try {
con.rollback();
} catch (SQLException e) {
e.printStackTrace();
}
}
finally {
try {//最后要把这个连接进行还原,再返回到数据库的连接池里去
con.setAutoCommit(true);
}
catch(SQLException e) {
e.printStackTrace();
}
JDBCUtils.closeResource(con, null);
}
}
public static void main(String []args) {
testUpdateWithTx();
}
}
1
jdbc 事物 commit 和rollback方法的更多相关文章
- JDBC Tutorials: Commit or Rollback transaction in finally block
http://skeletoncoder.blogspot.com/2006/10/jdbc-tutorials-commit-or-rollback.html JDBC Tutorials: Com ...
- 在Hibernate中分别使用JDBC和JTA事务的方法
在Hibernate中使用JDBC事务 Hibernate对JDBC进行了轻量级的封装,它本身在设计时并不具备事务处理功能.Hibernate将底层的JDBCTransaction或JTATransa ...
- JDBC事物的处理
JDBC事物的处理: 概念:事务是指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功. 数据库开启事务命令: start transaction 开启事务 Rollback ...
- 数据库事物 jdbc事物 spring事物 隔离级别:脏幻不可重复读
1.数据库事物: 事物的概念 a给b打100块钱的例子 2.jdbc事物: 通过下面代码实现 private Connection conn = null; private PreparedState ...
- JDBC——事物管理
案例:银行转账问题,数据库如下 相关API setAutoCommit(boolean autoCommit) 将此连接的自动提交模式设置为给定状态.设置事务是否自动提交如果设置为false,表示手 ...
- mysql事务,START TRANSACTION, COMMIT和ROLLBACK,SET AUTOCOMMIT语法
http://yulei568.blog.163.com/blog/static/135886720071012444422/ MyISAM不支持 START TRANSACTION | BEGIN ...
- 14.5.2.2 autocommit, Commit, and Rollback
14.5.2.2 autocommit, Commit, and Rollback 在InnoDB,所有的用户活动发生在一个事务里, 如果自动提交模式是启用的, 每个SQL语句形成一个单独的事务.默认 ...
- 14.3.2.2 autocommit, Commit, and Rollback 自动提交 提交和回滚
14.3.2.2 autocommit, Commit, and Rollback 自动提交 提交和回滚 如果自动提交模式被启用,在InnoDB里, 所有的用户活动发生在一个事务里, 每个SQL语句 ...
- flume-sink报错 java.lang.IllegalStateException: close() called when transaction is OPEN - you must either commit or rollback first
1. 确认代码无误(根据情况修改,表示若获得不了数据不会自动commit或者rollback): Event event = channel.take(); if (event == null) { ...
随机推荐
- SSM项目用ajax来显示数据
<script type="text/javascript"> //1:页面加载完成后,直接去发送ajax请求,要到分页的数据 $(function(){ $.ajax ...
- 【LeetCode 85】最大矩形
题目链接 [题解] 把所有的"1"矩形分成m类. 第j类的矩形.他的右边界跟第j列紧靠. 那么. 我们设f[i][j]表示(i,j)这个点往左最长能延伸多少个数目的"1& ...
- 10.18.2 linux文件压缩与打包
tar压缩工具 tar 本身为一个打包工具,可以把目录打包成一个文件,它的好处是它把所有文件整合成一个大文件整体,方便拷贝或者移动. 语法:tar [-zjxcvfpP] filename tar 命 ...
- [CSP-S模拟测试]:string(文艺平衡树)
题目传送门(内部题60) 输入格式 第一行三个数$n,m,k$.第二行一个长度为$n$的串.接下来$m$行每行两个数$L_i$和$R_i$. 输出格式 一个串,表示字典序第$k$小的合法的能被填出的串 ...
- AIZU 2560 [想法题]
表示敲完多项式乘法&高精度乘法两道FFT模板题后就开始来磕这题了 这题相对而言应该不算模板题 不过神犇们肯定还是一眼看穿 如果原OJ访问速度较慢的话可以考虑戳这里 http://acm.hus ...
- mongo 数据库存储
mongo 数据库,获取有赞的数据. from app import mongo from app.external.yz.goods_api import YzGoodsApi from openp ...
- Android深度探索-卷1第四章心得体会
这一章的和三章的git用法有联系,so,吧上一章的git基本用法搞好了再来,具体的方法就是看书上网查,这里就不做详细步骤介绍了.这章就有点意思了,是源码的下载和编译,有能看的,能自己鼓捣的,本章介绍的 ...
- ecs centos7.3 搭建vsftpd 虚拟用户
FTP介绍 FTP会话时包含了两个通道,一个叫控制通道,端口号21:一个叫数据通道,端口号20. 控制通道:控制通道是和FTP服务器进行沟通的通道,连接FTP,发送FTP指令都是通过控制通道来完成的. ...
- Cocos2d-x之Vector<T>
| 版权声明:本文为博主原创文章,未经博主允许不得转载. Vector<T>是Cocos2d-x 3.x中推出的列表容器,在cocos2d-x3.0之前的版本是Array,因此它所能容 ...
- python3使除法结果为整数
学习python3遇到问题: 今天在学习python时,想利用(121/100)得到的结果为整数 1, 121/100 outout:1.21 但是实际结果是浮点数 1.21 原因:python3后, ...