zbloi3 2016-05-23 13:53 采纳率: 0%
浏览 2654

Java事物回滚失效,在抛出异常的情况下仍然提交了SQL

private Connection connection;
private Statement pre;

public String set(String goal,String marriage){
return "update info set goal='"+goal+"'where marriage='"+marriage+"'";
}

public void start(){
    String sql="jdbc:mysql://127.0.0.1/student";

    try {
        connection = DriverManager.getConnection(sql,"root","111");
        connection.setAutoCommit(false);
        pre = connection.createStatement();

        pre.executeUpdate(set("配偶","未婚"));
        pre.executeUpdate(set("情人","已婚"));
        pre.executeUpdate(set("包养","学生"));

  if(true)
        throw new SQLException("ni");

        connection.commit();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();

        try {
            connection.rollback();
        } catch (SQLException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    }
}
  • 写回答

3条回答 默认 最新

  • ljheee 2016-05-23 14:15
    关注

    抛的是什么异常,发一下

    if(true)
    throw new SQLException("ni");
    这个自定义异常,一定会抛出。。。。。但-----它是上抛,相当于方法抛出异常一样,向上级(main方法)抛,所以try-catch中,
    不会捕获到你的自定义SQLException("ni");

    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料