DB in laufender Jar

Hallo Community,

bin mir gerade nicht sicher ob das hier richtig passt.

Aber nun zum Problem (kann man bei bedarf immer noch verschieben), ich habe eine Swing Application in der ich eine HSQLDB eingebunden haben. Nun hatte ich erwartet das wenn ich diese Swing Application dann als Runnable Jar exportiere das die db ihre Daten länger als eine Session hält.

Es ist aber so das ich das Programm starte, Daten speichern kann, abfragen etc, funktioniert, nur wenn ich das Programm schließe und wieder öffne und die Daten abrufen will, sind keine Daten mehr vorhanden.

Ich denke das es daran liegt das das Programm halt nicht installiert wird. Kommt das hin? Gibt es dennoch einen Weg das die DB die Daten speichert und nach dem schließen noch existieren?

Gruß
Mad

Moin,

schau mal hier:


(Stichwort: Flexibillität!)

Gruß
Klaus

EDIT:
http://www.hsqldb.org/ sollte beschrieben, wie und wo das jeweils einzustellen ist!

ok, also existiert die DB nur zur Laufzeit.

Irgendwelche Alternativen mit der ich mein Ziel erreichen könnte?

Was dir vfl_freak damit wahrscheinlich sagen wollte: es klingt als ob du deine Datenbank im “in-memory”-Modus laufen lässt. Wie in seinen Links beschrieben werden die Daten somit nicht persistent abgelegt. Schau dir die Links an, dort sollte beschrieben sein, wie du die Daten auf die Festplatte speichern kannst.

Hey, danke für die Antworten.

War erst zu Faul, hatte deshalb schon einen kleinen Exkurs zu SqLite unternommen, dabei ist es mir dann aufgefallen.

Wenn man eine Datenbankverbindung herstellt macht man das wie folgt:

					"jdbc:hsqldb:mem:.; shutdown=false", "root", "");```

dabei steht in den Parametern hinter hsqldb dieses "mem:." dieses besagt das es memory only läuft, wie in den wiki Artikel existiert die DB dann nur so Lange wie die Anwendung läuft.

```con = DriverManager.getConnection(
					"jdbc:hsqldb:test.db; shutdown=false", "root", "");```

Wenn man jedoch das "mem:." durch bspw. "test.db" ersetz, wird auf der Ebene wo sich auch die jar befindet eine datenbank angelegt, diese Datenbank wird dann beim nächsten Start gesucht (dabei wird in den gleichen Verzeichnis wo die jar liegt gesucht) und verwendet.

Moin,

yeep :lol: