zoukankan      html  css  js  c++  java
  • JDBC: JDBC 控制事务

    之前我们是使用 MySQL 的命令来操作事务。接下来我们使用 JDBC 来操作银行转账的事务。 

    1 数据准备 

    -- 创建账户表
    CREATE TABLE account(
        -- 主键
        id INT PRIMARY KEY AUTO_INCREMENT,
        -- 姓名
        NAME VARCHAR(10),
        -- 转账金额
        money DOUBLE
    );
     
    -- 添加两个用户 
    INSERT INTO account (NAME, money) VALUES ('tom', 1000), ('jack', 1000);

    2 事务相关API 

    我们使用 Connection中的方法实现事务管理

    方法 

    说明

    void setAutoCommit(boolean autoCommit)

    参数是true或 false,如果设置为false,

    表示关闭自动提交,相当于开启事务

    void commit() 

    提交事务

    void rollback()  回滚事务

    3 开发步骤 

        1. 获取连接

          2. 开启事务

          3. 获取到 PreparedStatement , 执行两次更新操作

          4. 正常情况下提交事务

          5. 出现异常回滚事务

          6. 最后关闭资源

    4 代码示例 

     public class JDBCTransaction {
     
        //JDBC 操作事务
        public static void main(String[] args) {
     
            Connection con = null;
            PreparedStatement ps = null;
     
            try {
                //1. 获取连接
                con = JDBCUtils.getConnection();
     
                //2. 开启事务
                con.setAutoCommit(false);
     
                //3. 获取到 PreparedStatement 执行两次更新操作                
                //3.1 tom 账户 -500
                ps = con.prepareStatement("update account set money = money - ? where name = ? ");
                ps.setDouble(1,500.0);
                ps.setString(2,"tom");
                ps.executeUpdate();
     
                //模拟tom转账后 出现异常
                System.out.println(1 / 0);
     
                //3.2 jack 账户 +500
                ps = con.prepareStatement("update account set money = money + ? where name = ? ");
                ps.setDouble(1,500.0);
                ps.setString(2,"jack");
    ps.executeUpdate();
    //4. 正常情况下提交事务 con.commit(); System.out.println("转账成功!"); } catch (SQLException e) { e.printStackTrace(); try { //5. 出现异常回滚事务 con.rollback(); } catch (SQLException ex) { ex.printStackTrace(); } } finally { //6. 最后关闭资源 JDBCUtils.close(con,ps); } } }

    5 JDBC - 练习

     

     

  • 相关阅读:
    gentoo Wireless Configuration
    Gentoo: Chrome
    Gentoo: user's permission
    参考
    GithubPages上部署hexo
    hexo 个人博客搭建
    服务器修改用户名和密码
    CentOS 服务器搭建 mediawiki
    mysql 修复命令日志
    个体如何采用敏捷的工作方式
  • 原文地址:https://www.cnblogs.com/JasperZhao/p/15044748.html
Copyright © 2011-2022 走看看