博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JDBC的事务管理
阅读量:7297 次
发布时间:2019-06-30

本文共 3221 字,大约阅读时间需要 10 分钟。

1.1.1 转账案例代码实现

@Test        /**         * 完成转账的案例         */        public void demo1(){                Connection conn = null;                PreparedStatement pstmt  = null;                try{                        /**                         * 完成转账代码:                         * * 扣除某个账号的钱                         * * 给另外一个账号加钱                         */                        // 获得连接:                        conn = JDBCUtils.getConnection();                        // 编写SQL语句:                        String sql = "update account set money = money + ? where name = ?";                        // 预编译SQL:                        pstmt = conn.prepareStatement(sql);                        // 设置参数:                        // 用aaa账号给bbb账号转1000元                        pstmt.setDouble(1, -1000);                        pstmt.setString(2, "aaa");                        // 执行SQL:扣除aaa账号1000元                        pstmt.executeUpdate();//                        int i = 1 / 0;                        // 给bbb账号加1000                        pstmt.setDouble(1, 1000);                        pstmt.setString(2, "bbb");                        pstmt.executeUpdate();                }catch(Exception e){                        e.printStackTrace();                }finally{                        JDBCUtils.release(pstmt, conn);                }        }

在转账中没有添加事务的管理,出现aaa账号的钱被转丢了,但是bbb账号的钱没有任何变化。需要给转账的功能添加事务的管理。

1.1.1 在转账中添加事务管理:
2.1.1.1.1 事务管理的API:
JDBC的事务管理
JDBC的事务管理
JDBC的事务管理

1.1.1.2 在转账中添加事务管理

@Test        /**         * 完成转账的案例         */        public void demo1(){                Connection conn = null;                PreparedStatement pstmt  = null;                try{                        /**                         * 完成转账代码:                         * * 扣除某个账号的钱                         * * 给另外一个账号加钱                         */                        // 获得连接:                        conn = JDBCUtils.getConnection();                        // 开启事务                        conn.setAutoCommit(false);                        // 编写SQL语句:                        String sql = "update account set money = money + ? where name = ?";                        // 预编译SQL:                        pstmt = conn.prepareStatement(sql);                        // 设置参数:                        // 用aaa账号给bbb账号转1000元                        pstmt.setDouble(1, -1000);                        pstmt.setString(2, "aaa");                        // 执行SQL:扣除aaa账号1000元                        pstmt.executeUpdate();                        int i = 1 / 0;                        // 给bbb账号加1000                        pstmt.setDouble(1, 1000);                        pstmt.setString(2, "bbb");                        pstmt.executeUpdate();                        // 提交事务:                        conn.commit();                }catch(Exception e){                        // 回滚事务:                        try {                                conn.rollback();                        } catch (SQLException e1) {                                e1.printStackTrace();                        }                        e.printStackTrace();                }finally{                        JDBCUtils.release(pstmt, conn);                }        }

转载于:https://blog.51cto.com/13587708/2363610

你可能感兴趣的文章
2.Hadoop集群安装进阶
查看>>
java研发工作组环境架设
查看>>
代码片收集
查看>>
网站备案与备案注销
查看>>
书单丨打开投资理财之路,从这25本书开始
查看>>
Less 创建css3动画@keyframes函数
查看>>
.NET Framework 4 与 .NET Framework 4 Client Profile的区别与联系
查看>>
Que pensez-vous de air jordan pas cher
查看>>
SQL Server 2008创建定期自动备份任务(转)
查看>>
SimpleDateFormat
查看>>
epoll_wait会被系统中断唤醒
查看>>
Java设计模式-代理模式
查看>>
Android--sharepreference总结
查看>>
在博客园已经一年多时间了,今天开通博客了!
查看>>
给定矩阵行数和矩阵列数,顺时针打印矩阵(从0开始)
查看>>
个人阅读作业week7
查看>>
Java数据类型(2)------自动封装拆箱
查看>>
java基本语法
查看>>
oracle多表关联多字段update
查看>>
欧拉函数
查看>>