Używam derby jako wbudowanej bazy danych. Ponadto używam opcji bazy danych w pamięci do testów jednostkowych.Jak zamknąć bazę danych Derby w pamięci Właściwie
Czego nie mogę się dowiedzieć, to jak poprawnie wyłączyć bazę danych Derby (A quick look at the code). Sądzę, że działa to w przypadku standardowej bazy danych, ale uzyskuję różne wyjątki podczas próby podobnego kodu w bazie danych w pamięci.
Zamierzam pominąć szczegóły, dodam je, jeśli inne odczucia są potrzebne.
Zasadniczo próbuję zamknąć mojej bazy danych w tych dwóch mód gdzie moja baza danych w pamięci jest konsekwentnie nazywany „eh”:
DriverManager.getConnection("jdbc:derby:memory:eh;shutdown=true");
następnie:
DriverManager.getConnection("jdbc:derby:eh;shutdown=true");
Były wyniki w an exception but not the one expected. Szczegóły są następujące:
java.sql.SQLNonTransientConnectionException: Baza danych "pamięć: eh" wyłączenie.
Te ostatnie wyniki w
java.sql.SQLException: Baza 'eh' nie została znaleziona.
Na podstawie tego, co udało mi się wymyślić, chcemy uzyskać SQLException
, ale nie tę, którą otrzymujemy. Z drugiej strony błąd SQLNonTransientConnectionException
wydaje się bardziej odpowiedni, ale nie jest prawidłowym typem (chociaż pochodzi z SQLException
) i nie ma właściwego kodu stanu. Kod stanu kończy się: 08006
.
Przykładowy kod I ilustruje, że SQLException
ze stanem SQL "XJ015".
Uwaga: Podany przykład to: WwdEmbedded Program (Java Code).
Używanie drop zamiast shutdown wydaje się być tym czego potrzebujesz. shutdown wydaje się nie opuszczać bazy danych. – BrunoJCM