zoukankan      html  css  js  c++  java
  • jdbc转账事务案例 阿善没用

    package com.itheima.demo01_jdbc_transaction;

    import com.itheima.utils.JDBCUtils;

    import java.sql.Connection;
    import java.sql.SQLException;
    import java.sql.Statement;

    /*
    案例: 演示JDBC的事务操作之 模拟转账

    版本2: 模拟转账, 通过事务实现. 掌握
    */
    public class Demo02 {
    public static void main(String[] args) {
    Connection conn = null;
    Statement stat = null;
    try {
    //1. 获取连接对象.
    conn = JDBCUtils.getConnection();
    //2. 获取可以执行SQL语句的对象.
    stat = conn.createStatement();
    //3. 执行SQL语句, 获取结果集.
    String sql1 = "UPDATE account SET money = money - 1000 WHERE aid = 1;";
    String sql2 = "UPDATE account SET money = money + 1000 WHERE aid = 2;";

    //开启事务.
    //关闭事务的自动提交功能 = 开启了我们自己的事务.
    conn.setAutoCommit(false);

    int num1 = stat.executeUpdate(sql1); //扣钱
    //System.out.println(1 / 0);
    int num2 = stat.executeUpdate(sql2); //加钱

    //4. 操作结果集.
    if (num1 == 1 && num2 == 1) {
    //提交事务
    conn.commit();
    System.out.println("转账成功!");
    }
    } catch (Exception e) {
    //e.printStackTrace();
    //事务回滚
    try {
    conn.rollback();
    } catch (SQLException e1) {
    e1.printStackTrace();
    }
    System.out.println("转账失败");
    } finally {
    //5. 释放资源.
    JDBCUtils.release(conn, stat, null);
    }
    }
    }

  • 相关阅读:
    发光二极管
    续流二极管作用及工作原理
    python backtrace注意事项
    docker tips
    direct stdin and stdout
    python skill
    mysql comments
    python dict
    python list and tuple
    Python library
  • 原文地址:https://www.cnblogs.com/shan13936/p/13904434.html
Copyright © 2011-2022 走看看