/ / chcesz sprawdzić, czy tabela istnieje przed dokonaniem transakcji - java, sqlite, jdbc

chcesz sprawdzić, czy tabela istnieje przed dokonaniem transakcji - java, sqlite, jdbc

Piszę aplikację przy użyciu bazy danych java i sqlite. Tworzę wiele insertów w bazie danych. Za każdym razem przed wstawieniem użyłem następującej instrukcji SQL i wykonałem ją przy pomocy java

CREATE TABLE IF NOT EXISTS TABLE_NAME "
+ " (ID INT NOT NULL, "
+ " PERCENT INT NOT NULL, "
+ " TASK_DATA VARCHAR(1000) ,"
+ " CONSTRAINT pk_progressID PRIMARY KEY (ID))

Jednak nie jest to dobrą praktyką do wykonywania tego oświadczenia za każdym razem. Jaka jest alternatywa taka, że ​​sprawdza również, czy tabela istnieje, czy też nie, i tworzy ją również, jeśli tak nie jest?

Odpowiedzi:

2 dla odpowiedzi № 1

Ten problem nazywa się "migracja bazy danych". Na każdym połączeniu bazy danych dokonanym przez twoją aplikację musisz znać strukturę bazy danych, a dane są w znanym oczekiwanym stanie i konfiguracji.

Jednym z rozwiązań jest wewnętrzne oznakowanie bieżącego stanu bazy danych, rodzaj numeru wersji. Oczywiście tabela bazy danych może być idealnym miejscem do przechowywania informacji o wersji.

Mogę iść dalej i poprowadzić cię przez tego rodzajuwersjonowanie, które można wykonać, jak uruchomić aplikację SQL i kod Java, aby zaktualizować wszelkie wystąpienia bazy danych zgodnie z najnowszymi oczekiwaniami. Ale nie muszę robić tego wyjaśnienia.

Dwa bardzo dobre projekty zostały już zbudowane, aby wykonać te zadania związane z migracją bazy danych. Brak kodu do napisania! Każdy z tych projektów można podłączyć do Twojej aplikacji.

Za każdym razem aplikacja łączy się z bazą danychsprawdza najnowsze znane informacje o wersji przechowywane w dodatkowej tabeli. Jeśli instancja bazy danych jest nieaktualna, narzędzia te uruchamiają skrypty SQL i / lub kod Java potrzebny do tworzenia / modyfikowania definicji tabel, wstawiania / modyfikowania / usuwania wierszy i tak dalej.

Oczywiście musisz starannie pisać, testować i archiwizować te skrypty SQL i aktualizować kod Java podczas tworzenia projektu.


1 dla odpowiedzi nr 2

Jest to powszechny problem aktualizacji wersji oprogramowania i starych danych bazy danych.

Najlepiej mieć wpis w bazie danych z własnym numerem wersji.

Następnie przy uruchomieniu programu możesz sprawdzić i zaktualizować odpowiednio, nawet w kilku wersjach, w zdefiniowany sposób.

while (database.version() < software.version) {
software.updateToNextFrom(database.version());
}