java - JDBC Connection 的 rollback 方法在哪里调用?

查看:457
本文介绍了java - JDBC Connection 的 rollback 方法在哪里调用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

不带事务的代码是这样的(外层的try-catch已省略):

Connection conn = getConnection();
try {
    Statement stmt = conn.createStatement();
    stmt.executeUpdate(sql1);
    stmt.executeUpdate(sql2);
} finally {
    conn.close();
}

如果要添加事务,rollback在哪里调用?

  1. 如果在catch中调用,那么捕获哪个异常?如果仅仅捕获SQLException,那么抛出其它异常的时候怎么办?如果捕获Exception,那么抛出的异常目前没法处理(例如RuntimeException)又怎么办?

  2. 如果在finally中调用,我怎么区分正常和异常情况?

解决方案

  1. Exception无法捕获RuntimeException的吗?

  2. JDBC你只需要处理SQLException即可

  3. JDK1.7之后一个catch块可以处理多个异常

try {
    // ...
} catch(SQLException | RuntimeException e) {
    conn.rollback();
    throw e;
}

这篇关于java - JDBC Connection 的 rollback 方法在哪里调用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆