Zielony Smok - logo witryny

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.