zoukankan      html  css  js  c++  java
  • jdbc 事物

    jdbc 事物

    一、什么是事务?

    事务就是用户定义的一系列数据库操作,这些操作可以视为一个完成的逻辑处理工作单元,要么全部执行,要么全部不执行,是不可分割的工作单元。

    二、事务是必须满足4个条件(ACID)

    事务的原子性( Atomicity):一组事务,要么成功;要么撤回。

    一致性 (Consistency):事务执行后,数据库状态与其他业务规则保持一致。如转账业务,无论事务执行成功否,参与转账的两个账号余额之和应该是不变的。

    隔离性(Isolation):事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度。

    持久性(Durability):软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit 选项 决定什么时候吧事务保存到日志里

    三.jdbc事物:

    JDBC处理事务的代码格式:

    try{
         con.setAutoCommit(false);//开启事务
         ......
         con.commit();//try的最后提交事务      
    } catch() {
        con.rollback();//回滚事务
    }

    示例:

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    
    public class Text {
        public static void main(String[] args)  {
            String url = "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8";
            String username = "root";
            String password = "1234";
            Connection conn = null;
            try {
                //1.加载驱动
                Class.forName("com.mysql.jdbc.Driver");
                //2.连接数据库
                conn = DriverManager.getConnection(url, username, password);
                //3.通知数据库开启事物,false代表开启
                conn.setAutoCommit(false);
                //4.创建sql语句
                String sql1 = "update accout set money = money-100 where name = 'A'";
                conn.prepareStatement(sql1).executeUpdate();
    
                String sql2 = "update accout set money = money+100 where name = 'B'";
                conn.prepareStatement(sql2).executeUpdate();
                //5.提交事物: 上面的两个sql语句都执行成功了 才会提交
                conn.commit();
    
            } catch (Exception e) {
                try {
                    //如果出现异常就通知数据库回滚事物
                    conn.rollback();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
                e.printStackTrace();
            }
        }
    
    }
  • 相关阅读:
    世界时钟国家中英文名称国家代码与北京的时差 一览
    拼写CAML查询的小工具
    The trust relationship between this workstation and the primary domain failed
    SharePoint 2003 架构介绍
    [经典文章翻译]垃圾收集: 在Microsoft .NET Framework中的自动化内存管理 第二部分
    [转] [精华] 跟我一起写 Makefile
    c#的常用排序
    MS SQL Server查询优化方法
    如何进行成功的创业程序员创业白皮书
    SQL编码规范
  • 原文地址:https://www.cnblogs.com/love2000/p/14187628.html
Copyright © 2011-2022 走看看