【问题标题】:JAVA DB: Shutdown Derby does not workJAVA DB:关闭 Derby 不起作用
【发布时间】:2012-03-27 05:43:25
【问题描述】:

我正在使用以下方法关闭与 java DB 的连接:

public void shutdownDisconnect() {

    if(connectionExists) {
        String databaseURL = getDBurl();
        dbProperties.put("shutdown", "true");
        try {
            DriverManager.getConnection(databaseURL, dbProperties);
            System.out.println("success"); 
        } catch (SQLException ex) {
           //shutdown always results in an SQLException
            System.out.println(ex); 
           //This exeption is:java.sql.SQLNonTransientConnectionException: DERBY SQL error: SQLCODE: -1, SQLSTATE: 08006, SQLERRMC: Database 'databasename' shutdown.
        }
        connectionExists = false;
    }
}

我的第一个 System.out.println 没有打印任何内容,这意味着没有执行 try,并且我得到了上述异常。

据我所知“成功关闭总是会导致 SQLException”,但这是否意味着未执行 try 语句?感谢您的帮助。

【问题讨论】:

    标签: derby javadb


    【解决方案1】:

    您的try执行,否则不会引发异常。

    不幸的是,这就是德比停摆的方式。

    【讨论】:

      【解决方案2】:

      错误被抛出

      DriverManager.getConnection(databaseURL, dbProperties);
      

      这就是为什么:

      System.out.println("success");
      

      不执行。

      System.out.println(ex); 
      

      正在打印

      java.sql.SQLNonTransientConnectionException: DERBY SQL error: SQLCODE: -1, SQLSTATE: 08006, SQLERRMC: Database 'databasename' shutdown.
      

      如您所见:catch-block 已处理。

      如果您将System.out.println("success"); 添加为 catch 块中的第一条语句,它将被打印出来。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-03
        • 1970-01-01
        • 1970-01-01
        • 2018-07-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多