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 }

 

posted @ 2018-01-05 23:56  猿上生活  阅读(178)  评论(0编辑  收藏  举报