zoukankan      html  css  js  c++  java
  • JDBC使用事务

    JDBC使用事务

    JDBC设置事务隔离级别

    JDBC中通过Connection提供的方法设置事务隔离级别:

    Connection.setTransactionIsolation(int level)
    

    leve参数可选值如下:

    Connection.TRANSACTION_READ_UNCOMMITTED 1(读未提交数据)
    Connection.TRANSACTION_READ_COMMITTED 2(读已提交数据)
    Connection.TRANSACTION_REPEATABLE_READ 4(可重复读)
    Connection.TRANSACTION_SERIALIZABLE 8(串行化)
    Connection.TRANSACTION_NONE 0(不使用事务)
    

    提示:在开发中,一般情况下不需要修改事务隔离级别

    模板(方法)

    ...
    conn.setAutoCommit(false); 关闭自动提交, 默认打开事务
    ...执行多条SQL
    conn.commit(); // 手动提交
    ...
    
    // name是一个字符串, 是回滚点的名字, 这个方法返回一个SavePoint对象
    SavePoint point = conn.setSavepoint(name); // 设置回滚点
    conn.rollback(point); // 回滚, 参数是个SavePoint对象
    
    conn.rollback(); // 回滚到上次提交的状态
    

    案例

    案例用到了 JDBC工具类

    public class TestTx {
    	public static void main(String[] args) throws SQLException {
    	    Connection conn = null;
    	    Statement stat = null;
    	    ResultSet rs = null;
    	    try {
    	        //1.获取连接
    	        conn = JdbcUtil.getConn();
    	        //2.关闭JDBC自动提交事务(默认开启事务)
    	        conn.setAutoCommit(false);
    	        //3.获取传输器
    	        stat = conn.createStatement();
    	        /* ***** A给B转账100元 ***** */
    	        //4.A账户减去100元
    	        String sql = "update acc set money=money-100 where name='A'";
    	        stat.executeUpdate(sql);
    	        //int i = 1/0; // 让程序抛出异常,中断转账操作
    	        //5.B账户加上100元
    	        sql = "update acc set money=money+100 where name='B'";
    	        stat.executeUpdate(sql);   
    	        //6.手动提交事务
    	        conn.commit();
    	        System.out.println("转账成功!提交事务...");
    	    } catch (Exception e) {
    	        e.printStackTrace();
    	        //一旦其中一个操作出错都将回滚,使两个操作都不成功
    	        conn.rollback();
    	        System.out.println("执行失败!回滚事务...");
    	    } finally{
    	        JdbcUtil.close(conn, stat, rs);
    	    }
    	}
    }
    
  • 相关阅读:
    学点 C 语言(40): 函数 多参函数
    存取 ListBox 列表 回复 "徐强" 的问题
    博客园RSS订阅汇总
    博客园电子期刊2012年2月刊发布啦
    上周热点回顾(3.53.11)
    博客园电子期刊2012年3月刊发布啦
    上周热点回顾(3.264.1)
    上周热点回顾(3.193.25)
    上周热点回顾(4.24.8)
    上周热点回顾(2.273.4)
  • 原文地址:https://www.cnblogs.com/zpKang/p/13152335.html
Copyright © 2011-2022 走看看