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();
            }
        }
    
    }
  • 相关阅读:
    HDOJ1024(最大M子段和)
    HDOJ1025(最长上升子序列)
    HDOJ1022(模拟栈)
    HDOJ(1018)
    HDOJ1238(string)
    HDOJ1015(简单深搜)
    HDOJ1016(标准dfs)
    Tabbar视图切换,返回上一视图,添加item
    页面转换方法
    网络状态判断
  • 原文地址:https://www.cnblogs.com/love2000/p/14187628.html
Copyright © 2011-2022 走看看