Я использую дерби как встроенную базу данных. Кроме того, я использую эту опцию базы данных в памяти для своих модульных тестов.
Я не могу понять, как правильно закрыть (быстрый просмотр кода) в базе данных Derby. Я верю, что я работаю над стандартной базой данных, но у меня возникают разные исключения, когда вы пытаетесь использовать аналогичный код в базе данных в памяти.
Я собираюсь пропустить детали, я добавлю их, если вам понадобятся другие ощущения.
В принципе, я пытаюсь закрыть мою базу данных в этих двух моделях, где моя база данных в памяти последовательно называется "eh":
DriverManager.getConnection("jdbc:derby:memory:eh;shutdown=true");
то
DriverManager.getConnection("jdbc:derby:eh;shutdown=true");
Первое приводит к исключению, но не ожидаемому. Подробности:
java.sql.SQLNonTransientConnectionException: выгрузка базы данных: eh.
Последнее приводит к
java.sql.SQLException: база данных 'eh' не найдена.
Основываясь на том, что мне удалось выяснить, нам нужен SQLException
, но не тот, который мы получаем. С другой стороны, ошибка SQLNonTransientConnectionException
кажется более подходящей, но не является правильным типом (хотя она получена из SQLException
) и не имеет правильного кода состояния. Код состояния заканчивается: 08006
.
В приведенном ниже примере кода показано, что a SQLException
с SQL-состоянием "XJ015".
Примечание. Пример, на который я ссылаюсь: WwdEmbedded Program (Java-код).