二进制下班了 2021-04-26 22:19 采纳率: 60%
浏览 130
已采纳

idea mysql 回滚失败?

 @Test
    public void Test02() {
        Connection conn = null;
        try {
            conn = getConnection();

            conn.setAutoCommit(false);

            int aa = state04(conn, "UPDATE user_table SET balance=balance-100 WHERE user=?", "AA");

            int i = 10/0;

            int bb = state04(conn, "UPDATE user_table SET balance=balance+100 WHERE user=?", "BB");

            conn.commit();

            System.out.println("交易成功");

        } catch (Exception e) {
            e.printStackTrace();
            try {
                conn.rollback();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        } finally {
            JDBCUtil.closeResource(conn, null);
        }
    }

    //通用的增删改 --version -2.0  考虑数据库事务的转账操作
    public int state04(Connection conn, String sql, Object ...args) throws Exception {
        PreparedStatement ps = null;
        try {
            conn = getConnection();

            ps = conn.prepareStatement(sql);

            for (int i = 0; i < args.length; i++) {
                ps.setObject(i + 1, args[i]);
            }

            return ps.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JDBCUtil.closeResource(null, ps);
        }
        return 0;
    }

用数据库语句在数据库是可以成功回滚数据的

 

看的是尚硅谷的视频,找不到问题在哪。

  • 写回答

1条回答 默认 最新

  • 我是个笨比 2021-04-26 22:42
    关注

    你下面那个方法不需要再调用getConnection方法了吧,那样会导致两个连接不同,就会不能回滚,使用传进来的connection就可以了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 2024-五一综合模拟赛
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭