Embedded DB für Java

cpu32

Grünschnabel
Hallo zusammen,

ich verzweifle gerade an den Versuchen in ein kleines Programm in Java eine Datenbank einzubetten. Dazu muss ich sagen, dass ich erst vor kurzem mit Java angefangen habe, vorher habe ich einige zeit mit VB.Net programmiert. Ich komme mit der Sprache Java und der IDE Eclipse eig auch ganz gut zurecht.

Nun aber zum eigentlichen Problem: Ich möchte in mein Programm eine bereits vorhandene Datenbank (liegt im .mdf-Format vor, aber ich kenne mich damit nicht so aus.., habe sie vor einiger zeit noch für ein VB.Net-Programm mit dem SQL Server Express Managment Studio erstellt) einbetten, sodass man am ende nur eine einzige .jar-File braucht um das Programm mitsamt der Datenbank und benötigten/m JDBC-Treiber(n) zu starten. Die Datenbank soll möglichst auch dann noch in der .jar-Datei bleiben, sodass keine weiteren Dateien "entstehen".

Ich habe mich bereits an derby und HSQLDB versucht, komme aber nicht so recht weiter.... :(


Ich hoffe ich habe mich verständlich ausgedrückt und ihr könnt mir helfen...

Danke schon einmal im Vorraus!

cpu32
 
Zuletzt bearbeitet:
Ich würde die Datenbank erst mal mit VB.NET in ein Format bringen (z.B. XML), das du mit Java problemlos einlesen kannst. Dann solltest du am besten HSQLDB nutzen, das ist relativ einfach und komplett in Java geschrieben, so dass du nicht mehr als ein .jar-File ausliefern musst.
Ich halte es für unwahrscheinlich, dass es für dein Datenbankformat eine Java-API gibt.
Schau dir mal das Kapitel 24 von http://openbook.galileocomputing.de/javainsel9/javainsel_24_001.htm an, vielleicht hilft dir das.
 
Die Dateiendung mdf kommt mir eher in Verbindung von CD-Images vor. Meinst du daher mdb, d.h. eine Access-Datenbank? Ich nehme das zumindest für meine Vorschläge an.

2 Varianten:
Variante 1:
Wenn du nicht gezwungen bist, dass es eine Access Datenbank ist, würde ich die Daten auch eher in eine andere Datenbank umziehen. Dann kannst du mit normalem JDBC drauf zugreifen.
Als DB schlage ich H2 vor. Das ist der inoffiziele Nachfolger von HSQL und ist wesentlich performanter.

Zum Umziehen kann dir vielleicht das Tool Squirrel helfen, hier gibt es eine DBCopy Plugin.Ob das Tool Access unterstützt kann ich dir nicht sagen. Du musst dabei aber eine JDBC einrichten. Wie das für Access machbar ist, kann ich dir leider nicht sagen.

Variante 2:

Oder du benutzt diese http://jackcess.sourceforge.net/ Bibliothek, um auf die Access-Datenbank zuzugreifen. Der Zugriff ist dann wirklich Access spezifisch. Es kann je nach Access-Version zu Problemen kommen.
 
Oder ganz einfach JDBC dafür verwenden. Für Access braucht man keinen besonderen Treiber, es wird der ganz normale JDBCODBC-Treiber verwendet und der Connectionstring sieht dann so aus:
Code:
String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" +<Dateipfad> + "}";
 
Zurück