二进制下班了 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 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘