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方法的更多相关文章

  1. JDBC Tutorials: Commit or Rollback transaction in finally block

    http://skeletoncoder.blogspot.com/2006/10/jdbc-tutorials-commit-or-rollback.html JDBC Tutorials: Com ...

  2. 在Hibernate中分别使用JDBC和JTA事务的方法

    在Hibernate中使用JDBC事务 Hibernate对JDBC进行了轻量级的封装,它本身在设计时并不具备事务处理功能.Hibernate将底层的JDBCTransaction或JTATransa ...

  3. JDBC事物的处理

    JDBC事物的处理: 概念:事务是指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功. 数据库开启事务命令: start transaction  开启事务 Rollback   ...

  4. 数据库事物 jdbc事物 spring事物 隔离级别:脏幻不可重复读

    1.数据库事物: 事物的概念 a给b打100块钱的例子 2.jdbc事物: 通过下面代码实现 private Connection conn = null; private PreparedState ...

  5. JDBC——事物管理

    案例:银行转账问题,数据库如下 相关API setAutoCommit(boolean autoCommit)  将此连接的自动提交模式设置为给定状态.设置事务是否自动提交如果设置为false,表示手 ...

  6. mysql事务,START TRANSACTION, COMMIT和ROLLBACK,SET AUTOCOMMIT语法

    http://yulei568.blog.163.com/blog/static/135886720071012444422/ MyISAM不支持 START TRANSACTION | BEGIN ...

  7. 14.5.2.2 autocommit, Commit, and Rollback

    14.5.2.2 autocommit, Commit, and Rollback 在InnoDB,所有的用户活动发生在一个事务里, 如果自动提交模式是启用的, 每个SQL语句形成一个单独的事务.默认 ...

  8. 14.3.2.2 autocommit, Commit, and Rollback 自动提交 提交和回滚

    14.3.2.2 autocommit, Commit, and Rollback 自动提交 提交和回滚 如果自动提交模式被启用,在InnoDB里, 所有的用户活动发生在一个事务里, 每个SQL语句 ...

  9. 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) { ...

随机推荐

  1. Cloudera Hadoop 环境搭建(离线安装)

    关于CDH和Cloudera Manager CDH (Cloudera's Distribution, including Apache Hadoop),是Hadoop众多分支中的一种,由Cloud ...

  2. jquery设置、判断、获取input单选标签选中状态

    1.设置某项单选input为选中状态: $("input[type='radio']").eq(1).attr('checked',true); ②也可设其属性checked为'c ...

  3. linux 下启动tomcat 时没有执行权限

    原因: 没有权限 解决 : chmod 777 *.sh Linux下启动tomcat

  4. C#正则表达式将html代码中的所有img标签提取

    /// <summary> /// 取得HTML中所有图片的 URL. /// </summary> /// <param name="sHtmlText&qu ...

  5. vue搭配的UI框架 pc端 + 移动端

    PC桌面端UI框架: 1,iview      (最新,用户评分高功能多炫酷 解决和避免了其他UI框架出现的一些小问题) 2, bootstrap  (使用用户最多样式死板没特色) 3,Element ...

  6. 前端每日实战:94# 视频演示如何用纯 CSS 创作一台拍立得照相机

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/YjYgey 可交互视频 此视频是可 ...

  7. Kindeditor在线文本编辑器过滤HTML

    KindEditor.ready(function (K) { editor = K.create('textarea[name="content"]', { filterMode ...

  8. SSD如何设置预留空间OP(Over-Provision)

    Over-Provision操作指南 SSD OP全称是(Over-Provision), 中文名预留空间, 指用户不可操作的容量,大小为SSD实际容量减去用户可用容量.简单来说over-provis ...

  9. gitlab fatal: Authentication failed for 'http://10.2.80.17:8090/yeyichao/201904041026PROj.git/'

    fatal: Authentication failed for 'http://10.2.80.17:8090/yeyichao/201904041026PROj.git/' git config ...

  10. IPython notebook在浏览器中显示不正常的问题及解决方法

    使用过Python的童鞋们应该知道IPython是一个比python自带的交互式界面更加友好的交互界面,IPython提供了自动补齐什么的,其实我还没开始用所以这里也不扯淡了,大家自己去网上查,IPy ...