JAVA DB: не работает отключение дерби - PullRequest
1 голос
/ 27 марта 2012

Я использую следующий метод, чтобы закрыть соединение с базой данных Java:

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 ]

3 голосов
/ 27 марта 2012

Ваш try блок выполняется , иначе исключение не будет выдано.

К сожалению, так работает отключение с помощью Derby.

1 голос
/ 27 марта 2012

Ошибка выдается на

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, он будет напечатан.

...