Apache Derby: Baza danych w pliku JAR lub ZIP
W plikach *.zip i w plikach *.jar nie można przechowywać pliku derby.properties.
Dostęp do bazy danych w pliku JAR
Aby uzyskać dostęp do naszej bazy danych musimy w połączeniu wyspecyfikować:
jdbc:derby:jar(ścieżka do pliku *.jar)(ścieżka do bazy w pliku *.jar)
Na przykładjdbc:derby:jar(c:/Przyklady/baza_urzedow.jar)baza_urzedow
Folder bazy danych tylko do odczytu można umieścić w pliku JAR albo ZIP.
Dostęp do bazy danych w pliku ZIP
Aby uzyskać dostęp do naszej bazy danych musimy w połączeniu wyspecyfikować:
jdbc:derby:jar(ścieżka do pliku *.zip)(ścieżka do bazy w pliku *.zip)
Gdyby w poniższym przykładzie był plik *.zippodalibyśmy:
jdbc:derby:jar(C:/Przyklady/baza_urzedow.zip)baza_urzedow
Klasa R095_jar_zip.java
package aderby.specyf; import aderby.DerbyUtil; import java.sql.*; public class R095_jar_zip { private static final String baza = "(C:/Przyklady/baza_urzedow.jar)baza_urzedow"; private static final String selectData = "SELECT * FROM urzad"; public static void main(String[] args) { DerbyUtil.setReadOnlyProps(); DerbyUtil.startDerbyEngine(DerbyUtil.embdriver); Connection conn = DerbyUtil.connectJarDB(baza, ""); Statement stat = null; ResultSet rs = null; try { stat = conn.createStatement(); rs = stat.executeQuery(selectData); while (rs.next()) { System.out.println(rs.getString(1) + " | " + rs.getString(2)); } } catch (SQLException e) { e.printStackTrace(); } DerbyUtil.close(stat); DerbyUtil.close(conn); DerbyUtil.close(rs); DerbyUtil.shutdownEmbeddedDB(baza); DerbyUtil.shutdownDerbyEngine(); } }
Wynik
1 | Nazwa urzędu 2 | Urząd Skarbowy 3 | Urząd Skarbowy 4 | Urząd Skarbowy 5 | Urząd Skarbowy 6 | Urząd Skarbowy 7 | Urząd Skarbowy 8 | Urząd Skarbowy ...
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.