Package de.willuhn.datasource.db
Class EmbeddedDatabase
java.lang.Object
de.willuhn.datasource.db.EmbeddedDatabase
Embedded Datenbank die man jederzeit gut gebrauchen kann.
Einfach eine Instanz mit User, Passwort und Pfad im Konstruktor
erzeugen, die Datenbank wird geladen oder (wenn sie noch nicht existiert)
automatisch im genannten Verzeichnis angelegt.
-
Constructor Summary
ConstructorsConstructorDescriptionEmbeddedDatabase
(String path, String username, String password) Erzeugt eine neue Instanz der Datenbank. -
Method Summary
Modifier and TypeMethodDescriptionvoid
create()
Erstellt eine neue Datenbank, falls sie noch nicht existiert.void
delete()
Loescht die Datenbank gnadenlos.void
executeSQLScript
(File file) Fuehrt das uebergebene File mit SQL-Kommandos auf der Datenbank aus.boolean
exists()
Prueft, ob die Datenbank existiert.Liefert eine Connection zu dieser Datenbank.Liefert einen DBService zu dieser Datenbank.Liefert eine MD5-Checksumme (BASE64-encoded) der Datenbank-Eigenschaften.getPath()
Liefert den Verzeichnis-Pfad, in dem sich die Datenbank befindet.void
repair
(com.mckoi.util.UserTerminal terminal) Repariert die Datenbank.
-
Constructor Details
-
EmbeddedDatabase
Erzeugt eine neue Instanz der Datenbank. Existiert sie noch nicht, wird sie automatisch angelegt.- Parameters:
path
- Verzeichnis, in dem sich die Datenbank befindet bzw angelegt werden soll.username
- Username.password
- Passwort.- Throws:
Exception
-
-
Method Details
-
exists
public boolean exists()Prueft, ob die Datenbank existiert.- Returns:
- true, wenn sie existiert.
-
create
Erstellt eine neue Datenbank, falls sie noch nicht existiert.- Throws:
IOException
- Wenn ein Fehler bei der Erstellung auftrat.
-
delete
public void delete()Loescht die Datenbank gnadenlos. Diese Funktion bitte MIT BEDACHT verwenden!. -
executeSQLScript
Fuehrt das uebergebene File mit SQL-Kommandos auf der Datenbank aus. Die Funktion liefert kein DBIteratorImpl zurueck, weil sie typischerweise fuer die Erstellung der Tabellen verwendet werden sollte. Wenn das Plugin also bei der Installation seine SQL-Tabellen erstellen will, kann es das am besten hier machen.- Parameters:
file
- das auszufuehrende SQL-Script.- Throws:
IOException
- Wenn beim Lesen des SQL-Scripts Fehler auftraten.SQLException
- Wenn beim Ausfuehren Fehler auftraten.
-
getPath
Liefert den Verzeichnis-Pfad, in dem sich die Datenbank befindet.- Returns:
- Pfad zur Datenbank.
-
getDBService
Liefert einen DBService zu dieser Datenbank.- Returns:
- DBService.
- Throws:
RemoteException
-
getMD5Sum
Liefert eine MD5-Checksumme (BASE64-encoded) der Datenbank-Eigenschaften. Diese kann gegen eine gespeicherte Version verglichen werden, um zu pruefen, ob die Datenbank den erwarteten Eigenschaften entspricht. Das ist z.Bsp. sinnvoll, wenn man pruefen will, ob das Datenbank-Modell zur Software-Version passt.
Szenario: Eine Anwendung moechte seine embedded Datenbank auf den aktuellen Stand bringen, weiss jedoch nicht, welche SQL-Statements hierfuer noetig sind, da das momentane Datenbank-Layout nicht bekannt ist.
Loesung: Die Anwendung haelt fuer alle moeglichen Versionsstaende der Datenbank je eine MD5-Summe bereit und vergleicht diese mit der aktuellen. Somit kann sie herausfinden, welche SQL-Befehle noch noetig sind, um die Anwendung auf den aktuellen Stand zu bringen.
Eine weitere Einsatzmoeglichkeit ist das Detektieren von Datenbank-Manipulationen. Sprich: Wurde die Datenbank von einem Dritten geaendert, laesst sich dies durch Pruefen der Checksumme herausfinden.- Returns:
- MD5-Checksumme.
- Throws:
Exception
-
repair
public void repair(com.mckoi.util.UserTerminal terminal) Repariert die Datenbank.- Parameters:
terminal
- Terminal, welches zur Ausgabe und Interaktion verwendet werden soll.UserTerminal
ist ein Interface und muss vom Benutzer implementiert werden.
-
getConnection
Liefert eine Connection zu dieser Datenbank.- Returns:
- Connection.
- Throws:
Exception
-