Я использую дерби в качестве встроенной базы данных. Кроме того, я использую опцию базы данных в памяти для своих модульных тестов.
Я не могу понять, как правильно отключить (быстрый взгляд на код) база данных Derby. Я полагаю, у меня это работает для стандартной базы данных, но я получаю другие исключения при попытке подобного кода в базе данных в памяти.
Я опущу детали, я добавлю их, если потребуется другое чувство.
По сути, я пытаюсь закрыть свою базу данных в этих двух модах, где моя база данных в памяти постоянно называется "эх":
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
.
Пример кода, который я имею, иллюстрирует, что SQLException
с состоянием SQL "XJ015".
Примечание: пример, на который я ссылаюсь: WwdEmbedded Program ( Java Code ).