Zielony Smok - logo witryny

Apache Derby – embedded – szybki start

Wymagania wstępne:

  1. Masz utworzony folder C:/Przykłady
  2. Jeśli działasz z linii poleceń utworzyłeś ścieżkę CLASSPATH lub MODULEPATH prowadzące do plików *.jar Apache Derby
  3. Jeżeli programujesz w IDE masz dodaną bibliotekę Apache Derby do projektu

Klasy

Klasa R007.java
1    package aderby.start;
2    
3    import aderby.DerbyUtil;
4    import java.sql.*;
5    
6    public class R007 {
7        private static final String baza = "C:\\Przyklady\\thirddb";
8        private static final String properties = "create=true";
9        private static final String createTable = "CREATE TABLE thirdtable (id INT PRIMARY KEY, name VARCHAR (30))";
10       private static final String insertData = "INSERT INTO thirdtable VALUES(1, 'Mirka'),(2, 'Ula'),(3, 'Jacek')";
11       private static final String selectData1 = "SELECT * FROM thirdtable";
12       private static final String selectData2 = "SELECT * FROM thirdtable WHERE id=2";
13   
14       public static void main(String[] args) {
15           DerbyUtil.startDerbyEngine(DerbyUtil.embdriver);
16           Connection conn = DerbyUtil.connectEmbeddedDB(baza, properties);
17           Statement stat1 = null;
18           Statement stat2 = null;
19           Statement stat3 = null;
20           Statement stat4 = null;
21           ResultSet rs1 = null;
22           ResultSet rs2 = null;
23           try {
24               stat1 = conn.createStatement();
25               stat1.execute(createTable);
26               stat2 = conn.createStatement();
27               stat2.execute(insertData);
28               stat3 = conn.createStatement();
29               rs1 = stat3.executeQuery(selectData1);
30               while (rs1.next()) {
31                   System.out.println(rs1.getInt(1) + " | " + rs1.getString(2));
32               }
33               stat4 = conn.createStatement();
34               rs2 = stat4.executeQuery(selectData2);
35               while (rs2.next()) {
36                   System.out.println(rs2.getInt(1) + " | " + rs2.getString(2));
37               }
38           } catch (SQLException e) {
39               e.printStackTrace();
40           }
41           DerbyUtil.close(rs1);
42           DerbyUtil.close(rs2);
43           DerbyUtil.close(stat1);
44           DerbyUtil.close(stat2);
45           DerbyUtil.close(stat3);
46           DerbyUtil.close(stat4);
47           DerbyUtil.close(conn);
48           DerbyUtil.shutdownEmbeddedDB(baza);
49           DerbyUtil.shutdownDerbyEngine();
50       }
51   }
52   

Ad. 7. Ścieżka do bazy danych

Ad. 8. Jeden z atrybut połączenia. Baza danych jest tworzona poprzez ustanowienie połączenia. Jeżeli create=true, a baza istnieje zostanie ustanowione połączenie, jeśli baza nie istnieje baza zostanie utworzona i zostanie z nią nawiązane połączenie.

Ad 9. Polecenie SQL utworzenia tabeli zawierającej dwie kolumny (id, name). W pierwszej kolumnie umieszczane będą liczby typu int. PRIMARY KEY oznacza zakaz wprowadzenia danej liczby więcej niż raz, ponieważ liczby te będą używane do wyszukiwania. Nie ma obowiązku wprowadzania liczb w określonej kolejności. W drugiej umieszczane mogą być łańcuchy znaków (stringi) o długości do 30 znaków.

Ad. 10. Polecenie SQL wstawienia kolejnych trzech rekordów.

Ad. 11. Polecenie SQL wybrania wszystkich danych z tabeli.

Ad. 13. Polecenie wybrania rekordu, który w kolumnie id ma wartość 2.

Ad. 15. Startuje silnik Derby, wczytując sterownik.

Ad. 15. Utworzenie połączenia z podana bazą z użyciem podanych właściwości.

Ad. 24. Utworzenie polecenia.

Ad. 25. Wykonanie polecenia utworzenia tabeli.

Ad. 26. Utworzenie polecenia.

Ad. 27. Wykonanie polecenia wstawienia danych do tabeli

Ad. 28. Utworzenie polecenia

Ad. 29. Wykorzystanie polecenia do wykonania zapytania i utworzenia zbioru wynikowego.

Ad. 30 – 32. Przeglądanie zbioru wynikowego i drukowanie wszystkiego co zostanie znalezione.

Ad. 33 – 40. Jak Ad. 30 – 32.

Ad. 41 – 47. Zamykamy zbiory wynikowe, polecenia i połączenie w kolejności odwrotnej niż były tworzone.

Ad. 49. Zamyka pojedynczą bazę danych.

Ad. 50. Stopuje silnik derby (i wszystkie ewentualne bazy).

Wynik

Po uruchomieniu kodu klasy R007.java na konsoli zobaczymy:

1 | Mirka
2 | Ula
3 | Jacek
2 | Ula

W folderze C:/Przykłady znajdziemy bazę o nazwie thirddb.

Pliki do ściągniecia

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.