JAVA DB:Shutdown Derby不起作用

时间:2012-03-27 05:43:26

标签: derby javadb

我使用以下方法关闭与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没有打印任何意味着尝试没有执行的任何内容,并且我超出了指示的异常。

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

2 个答案:

答案 0 :(得分:3)

您的try阻止 ,否则不会抛出异常。

不幸的是,这是关闭Derby的方式。

答案 1 :(得分:1)

错误发生在

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 - 块。

如果将System.out.println("success");添加为catch块中的第一个语句,则会打印它。