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 }
  • 相关阅读:
    软件开发与定制报价
    C# HttpHelper 1.0正式版发布
    C#仿QQ皮肤-TextBox 控件实现
    HTML5学习笔记第一节(智能提示和视频音频标签)
    C#多线程|匿名委托传参数|测试您的网站能承受的压力|附源代码升级版
    JavascriptHelp
    我的个人博客论坛版建立啦!
    Win7 + VirtualBox安装Mac OS X雪豹操作系统图文详解
    Sql2005性能工具(SQL Server Profiler和数据库引擎优化顾问)使用方法详解
    Webcast 系列课程 NET最全,最权威的学习资源
  • 原文地址:https://www.cnblogs.com/xuzhaocai/p/8207323.html
Copyright © 2011-2022 走看看