首页 > 解决方案 > 在 Java 中重试 JDBC 连接

问题描述

我正在尝试使用重试逻辑来获取 JDBC 连接,以防出现 SQL 异常,例如:

    int counter = 0;
Connection conn = null;
    while (null == conn) {
      try {
        conn = GetConnectionObject;

      } catch (SQLException e) {
        if (++counter > MAX_RETRY) {
          //Log ERROR
          break;
        }
      } finally {
        if (null != conn) {
          try {
            DbUtils.close(conn);
          } catch (SQLException e) {
            logger.error("Exception while closing the connection object");
          }
        }
      }
    }

我目前无法对此进行测试,因此需要一些帮助。

如果我遇到异常,这将正常工作,然后我可以在重试后登录。但是如果我们没有得到异常,它将来到 finally 块并关闭连接。Try-Catch-Finally 在 while 循环内。

所以如果我关闭我的连接,如果到达就流动

而(空== conn)

关闭后我的连接对象会变为空吗?

或者如果有其他方法可以实现重试部分?

标签: javajdbc

解决方案


不,关闭后它不会变为空。使用 Connection.isClosed()而不是while( null== conn). 此外,您应该 //Do some task.摆脱这段代码,因为它的目标是获得 JDBC 连接。


推荐阅读