Seite 1 von 1

Externe (gesplittete) HSQLDB: Datenbankdateien von hsqldb.jar trennen?

Verfasst: Fr 15. Mär 2024, 18:03
von Freischreiber
Hallo!

Wenn man die HSQL-Datenbank im aufgeteilten Modus verwendet, also außerhalb der odb-Datei mit einem file-Link auf die Datenbankdateien, dann liegt die Datenbank in einem eigenen Ordner, und in diesem Ordner liegt auch die benutzte hsqldb.jar-Datei. Dort ist die Datenbank drin.

Jetzt würde ich gerne die Datenbank-Dateien (dbname.data, dbname.script usw.) von der hsqldb.jar-Datei trennen.
Grund ist, daß die Datenbank selbst auf einem verschlüsselten Laufwerk liegt, die jar-Datei und die odb-Datei das aber nicht brauchen, weil dort ja keine Daten enthalten sind.

Weiß jemand, ob und wie man das hinbekommt? Also odb-Datei und jar-Datei unverschlüsselt unter Eigene Dateien, und die DB-Dateien auf einem Veracrypt-Laufwerk?

Gruß
Freischreiber

Re: Externe (gesplittete) HSQLDB: Datenbankdateien von hsqldb.jar trennen?

Verfasst: So 17. Mär 2024, 08:34
von RobertG
Die hsqldb.jar, die Du da nutzt, muss nur in dem Class-Path (oder wie das gerade heißt) hinterlegt werden. Aber Vorsicht: Bei HSQLDB ist das dann so, dass die internen HSQLDB-Datenbanken auch versuchen, diese hsqldb.jar zu nutzen. Und wenn das eine neuere Variante ist, dann bekommst Du Probleme mit internen Datenbanken.

Re: Externe (gesplittete) HSQLDB: Datenbankdateien von hsqldb.jar trennen?

Verfasst: Mi 20. Mär 2024, 18:53
von F3K Total
Moin,
Ich mache das so, dass ich den Classpath per Makro in die .odb eintrage. So habe ich dann auch keine Probleme mit "normalen" .odb Dateien.
Habe gerade keinen Rechnerzugriff, kann aber demnächst einen Code-Snipsel posten.
Gruß R
EDIT: so sollte es klappen:

Code: Alles auswählen

Sub insert_link_to_HSQLDB_JAR
    sdriverURL = ConverttoUrl(C:\Users\XXX\hsqldb.jar")
    thisdatabasedocument.datasource.settings.JavaDriverClassPath = sdriverURL
    thisdatabasedocument.store
end sub

Re: Externe (gesplittete) HSQLDB: Datenbankdateien von hsqldb.jar trennen?

Verfasst: Do 21. Mär 2024, 18:10
von Freischreiber
Hallo Robert, hallo R!

So ähnlich macht das das von mir bisher benutzte Makro auch:
https://forum.openoffice.org/en/forum/v ... 80#p293026
(unter Option 1 - 3.x)

Das ist doch dieser berühmte "additional classpath", neben dem man keinen globalen Classpath eintragen soll? Das funktioniert auch bisher, und der classpath in der Datei vermeidet das von Robert erwähnte Problem mit embedded Dbs.

Ich habe nur den Code nie hinterfragt. Das bisherige Makro setzt für jede Base-Datei den classpath direkt neben die Datei, in eine eigene jar-Datei, die sich dort befinden muß. Das führt bei mir zu einer unnötig langsamen Datenbank, weil der ganze DB-Pfad sich auf einem Veracrypt-Laufwerk befindet!

In Zukunft werde ich das wohl besser aufteilen, odb-Datei und jar-Datei unverschlüsselt, und nur die DB-Dateien auf dem verschlüsselten Laufwerk. :idea:

Danke!

Gruß
Freischreiber

Re: Externe (gesplittete) HSQLDB: Datenbankdateien von hsqldb.jar trennen?

Verfasst: Di 9. Apr 2024, 12:02
von Freischreiber
Hallo R,

sorry, ich komme mit dem Makro nicht so ganz klar.
Aktuell sieht es bei mir so aus, da irgendwas mit einem Anführungszeichen nicht paßte:

Code: Alles auswählen

Sub F3KTotal_insert_link_to_HSQLDB_JAR
REM Pfad zu einer aktuellen JAR-Datei, der im odb-Dokument gespeichert wird
	sPfad = "C:\Users\...\HSQLDB\"
    sURL = ConverttoUrl(sPfad)
    sdriverURL = sURL & "hsqldb.jar"
    msgbox sdriverURL
    thisdatabasedocument.datasource.settings.JavaDriverClassPath = sdriverURL
    thisdatabasedocument.store
end sub
Beim Ausführen erhalte ich "Objektvariable nicht belegt" bei thisdatabasedocument, weil ich das Makro nicht in der Base-Datei, sondern unter "Meine Makros..." gespeichert hatte.

:?: Da würde mich interessieren, wie man die gerade geöffnete Base-Datei aufrufen kann, wenn das Makro unter "Meine Makros" steht.

Und wenn ich das Makro versuchsweise in der Base-Datei speichere, kommt zwar diese Fehlermeldung nicht mehr, aber ich kann nicht erkennen, ob das Makro etwas bewirkt hat. Kann ich die vorgenommene Pfadeinstellung im Erfolgsfall irgendwo erkennen?

Edit:
Anders gefragt: gibt es nach der Makroausführung irgendeine Stelle in der odb-Datei, wo der neue Pfad hinterlegt ist? Ich finde in der zip-Datei nichts.

Vielen Dank,

Freischreiber

Re: Externe (gesplittete) HSQLDB: Datenbankdateien von hsqldb.jar trennen?

Verfasst: Di 9. Apr 2024, 15:55
von Freischreiber
:?: Da würde mich interessieren, wie man die gerade geöffnete Base-Datei aufrufen kann, wenn das Makro unter "Meine Makros" steht.
Das hab ich gefunden: statt "thisdatabasedocument..."

Code: Alles auswählen

thiscomponent.datasource.settings.JavaDriverClassPath = sdriverURL
und
thiscomponent.store
Aber wo der Pfad zur hsqldb.jar gespeichert wird, ist mir ein Rätsel.

Re: Externe (gesplittete) HSQLDB: Datenbankdateien von hsqldb.jar trennen?

Verfasst: Di 9. Apr 2024, 16:01
von Freischreiber
Aber wo der Pfad zur hsqldb.jar gespeichert wird, ist mir ein Rätsel.
Habs gefunden! In der content.xml steht nach Ausführung des Makros:
<db:data-source-setting-value>file:///C:/Users/.../HSQLDB/hsqldb.jar</db:data-source-setting-value>
Merke: niemals mit dem internen 7zip-Dateibetrachter nach Zeichenketten suchen. Der kann das wohl nicht.

Gruß
Freischreiber

Re: Externe (gesplittete) HSQLDB: Datenbankdateien von hsqldb.jar trennen?

Verfasst: Di 9. Apr 2024, 19:27
von F3K Total
Na, dann ist es ja gut.
Ich empfehle die Verwendung von Xray oder MRI.
Gruß R

Re: Externe (gesplittete) HSQLDB: Datenbankdateien von hsqldb.jar trennen?

Verfasst: Mi 10. Apr 2024, 09:04
von Freischreiber
F3K Total hat geschrieben:
Di 9. Apr 2024, 19:27
Ich empfehle die Verwendung von Xray oder MRI.
Und welches von beiden empfiehlst du am meisten? Ich lese immer von beiden gleichzeitig und dann vertage ich die Entscheidung, welches ich nehmen soll... :roll:

Re: Externe (gesplittete) HSQLDB: Datenbankdateien von hsqldb.jar trennen?

Verfasst: Mi 10. Apr 2024, 21:46
von F3K Total
Moin,
ich habe mit Xray angefangen komme damit gut klar und benutze es aus Gewohnheit. MRI kann noch bissel mehr.
Aus meiner Sicht also egal.
Gruß R