Apache Derby w Windows: copy, delete, move
Zakładam, że:
– masz utworzony folder C:/Przyklady oraz folder C:/Przyklady1.
– masz dostępne IDE z dodanymi bibliotekami Derby. Ja używam IntelliJ IDEA v. Community.
Tworzenie i zamykanie bazy
W Apache Derby nie ma żadnego polecenia SQL typu CREATE DATABASE
tworzącego bazę danych.
Baza danych jest tworzona przez utworzenie połączenia do bazy danych. Przy tworzeniu połączenia podajemy nazwę bazy danych, ewentualnie użytkownika i hasło i opcjonalnie inne właściwości. Jeżeli baza o tej nazwie istnieje zostaje ustanowione połączenie z tą bazą. Jeżeli baza nie istnieje, a uwzględniliśmy właściwość create=true
, to baza o tej nazwie zostanie utworzona i zostanie utworzone połączenie do niej. Jeżeli nie uwzględniliśmy właściwości create
lub podaliśmy create=false
to baza danych nie jest tworzona.
Przy wbudowanych bazach danych najczęściej nie używa się nazwy użytkownika i hasła, gdyż aplikacja może kontrolować dostęp do bazy danych.
Utwórzmy bazę danych o podanej nazwie bez podawania żadnych dodatkowych parametrów poza create=true
.
Jeżeli nie wyspecyfikowano położenia bazy danych to baza zostanie utworzona w katalogu bieżącym.
Przykładową bazę danych utworzymy przy użyciu klasy R025.java:
Klasa R025.java
package aderby.start; import aderby.DerbyUtil; public class R025 { public static void main(String[] args) { //uruchamiamy silnik Derby boolean started = DerbyUtil.startDerbyEngine("EmbeddedDriver"); System.out.println(started); //Tworzymy połączenie do bazy "r025" DerbyUtil.connectEmbeddedDB("C:/Przyklady/r025", ";create=true"); //zatrzymujemy silnik Derby boolean stopped = DerbyUtil.shutdownDerbyEngine(); System.out.println(stopped); } }
Uruchamiamy połączenie z bazą danych, potem zamykamy silnik bazy danych, a więc i rozłączamy z baza danych.
Po uruchomieniu klasy w folderze C:/Przyklady zobaczymy bazę danych r025, a na konsoli:
true true
Teraz możemy na bazie wykonać cały szereg innych czynności.
Kopiowanie bazy danych
Bazę danych, jak każdy folder Windows możemy skopiować przy użyciu znanych poleceń Windows albo mniej znanych poleceń wiersza poleceń Windows.
Jeśli chcemy użyć języka Java możemy napisać własną metodę copyDB
– zajrzyj do DerbyUtil
Metody użyjemy w klasie:
Klasa R026.java
span class="s0">package aderby.start; import aderby.DerbyUtil; import java.io.*; public class R026 { public static void main(String[] args) { try { DerbyUtil.copyDB("C:/Przyklady/r025", "C:/Przyklady1/r025"); } catch (IOException e) { e.printStackTrace(); } } }
Po uruchomieniu klasy kopia bazy zostanie utworzona w folderze C:/Przyklady1.
Usuwanie bazy danych
Następnym problemem jest usunięcie bazy danych. Musi to być wykonane rekurencyjnie poprzez usunięcie plików z folderów, a następnie pustych folderów, etc.
W języku Java możemy napisać stosowną metodę. W klasie DerbyUtil
przedstawiam metody pozwalające na usunięcie bazy danych:
dropDatabase(File dbPath)
dropDatabase(String dbPath)
deleteDB(String path)
Jednej z metod używamy w klasie:
Klasa R027.java
package aderby.start; import aderby.DerbyUtil; import java.io.*; public class R027 { public static void main(String[] args) { try { DerbyUtil.deleteDB("C:/Przyklady1/r025"); } catch (IOException e) { e.printStackTrace(); } } }
Po uruchomieniu klasy – baza zostaje usunięta z folderu C:/Przyklady1.
Nieco inaczej usuwamy bazę danych umieszczoną wyłącznie w pamięci. Opiszemy to w innym wpisie.
Przenoszenie bazy danych
Przeniesienie bazy danych można wykonać przez połączenie dwóch operacji: kopiowania i usuwania. Wykonujemy to klasie R028.java
:
Klasa R028.java
package aderby.start; import aderby.DerbyUtil; import java.io.*; public class R028 { public static void main(String[] args) { try { DerbyUtil.copyDB("C:/Przyklady/r025", "C:/Przyklady1/r025"); DerbyUtil.deleteDB("C:/Przyklady/r025"); } catch (IOException e) { e.printStackTrace(); } } }
Po uruchomieniu baza została przeniesiona.
Pliki do ściągnięcia
Aktualny (tworzony narastająco) plik module-info.java
Aktualny (tworzony narastająco) plik DerbyUtil.java
Pliki tworzone narastająco zastępują poprzednie pliki o tej samej nazwie i działają dla wszystkich wcześniej opublikowanych przykładów we wszystkich wpisach w projekcie. W przypadku pliku module-info.java
może być potrzebne skreślenie niepotrzebnych wpisów.