zoukankan      html  css  js  c++  java
  • java学习笔记之事务

    事务

    一.什么是事务?

      就是执行一组sql指令,这组sql指令要么全部执行成功,只要有一个失败,则全部失败

    二.事务的操作

      注意:和事务操作相关的都是Connection 的方法

         同一个事务需要同一个Connection实现类对象

      流程:

        开启事务:

          con.setAutoCommit(false);//关闭自动提交

                    true 开启自动提交

        提交事务

          con.commit();

        回滚事务

          con.rollback();

        转账小案例的分析:

     2     try
     3     {   //开启事务:之后系统会将以下所有的sql的执行当做一个整体
     4         int i = update:-100
     5         int j = update:+100
     6         if(i > 0 && j > 0){
     7            //提交事务:当所有的sql指令都执行成功之后,提交事务-> 所有对数据库的操作将永久生效,不可更改
     8            System.out.println("转账成功!");
     9         }
    10     }catch (Exception e)
    11     {
    12          //回滚事务:当你的事务中出现问题,没有全部执行执行成功,则回顾事务,这样之前对数据库的所有操作就被撤销
    13     }

      代码demo:

     1 public class Demo {
     2     public static void main(String[] args){
     3         Connection con=null;
     4         try{
     5             QueryRunner qr = new QueryRunner();
     6             con=C3P0Utils.getConnection();
     7             //开启事务
     8             con.setAutoCommit(false);
     9             int re1 = qr.update("update account set money=money-? where id=?",300,342);
    10             int re2 = qr.update("update account set money=money+? where id=?",300,345);
    11             if(re1>0&&re2>0){
    12                 //都执行成功提交事务
    13                 con.commit();
    14             }else{
    15                 //执行失败手动回滚事务
    16                 con.rollback();
    17             }
    18         }catch(Exception e){
    19             //发生异常回滚事务
    20             try {
    21                 con.rollback();
    22             } catch (SQLException e1) {
    23                 // TODO Auto-generated catch block
    24                 e1.printStackTrace();
    25             }
    26         }finally {
    27             try {
    28                 //将连接放回连接池
    29                 con.close();
    30             } catch (SQLException e) {
    31                 // TODO Auto-generated catch block
    32                 e.printStackTrace();
    33             }
    34         }
    35     }
    36 }
  • 相关阅读:
    2009 中国软件技术英雄会
    《致加西亚的信》一书中的一个隐蔽错误
    英文版XP不能打开带有中文路径的chm文件的解决办法
    NetBeans 时事通讯(刊号 # 49 Mar 17, 2009)
    对《致加西亚的信》的异议
    NetBeans 时事通讯(刊号 # 49 Mar 17, 2009)
    Linux运行时I/O设备的电源管理框架
    groovy正则提取完整版本
    Linux 流量监控软件 NetHogs
    Re: 在北京待着到底为了什么
  • 原文地址:https://www.cnblogs.com/xuzhaocai/p/8207323.html
Copyright © 2011-2022 走看看