Apache Derby – embedded – szybki start
Wymagania wstępne:
- Masz utworzony folder C:/Przykłady
- Jeśli działasz z linii poleceń utworzyłeś ścieżkę CLASSPATH lub MODULEPATH prowadzące do plików *.jar Apache Derby
- 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.