Base HSQL mehrbenutzerfähig

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

hol.sten
******
Beiträge: 871
Registriert: Fr, 18.11.2005 21:21

Re: Base HSQL mehrbenutzerfähig

Beitrag von hol.sten »

NTClient hat geschrieben:Primery-Key als Autozähler funktioniert nicht! Auch wenn ich eine neue Tabelle über odb erzeuge und für die Spalte Integer, AutoWert=ja wähle wird die Tabelle dennoch mit AutoWert=nein abgespeichert.

Bei vorhandenen Tabellen sind die Feldeigenschaften sowieso grau hinterlegt und können nicht verändert werden.

Das macht meine Struktur zu nichte!!
Nicht doch gleich die Flinte ins Korn werfen! Da du HSQLDB wg. Mehrbenutzerfähigkeit separat als Server startest, musst du zunächst einmal ja gar nicht die angestaubte 1.8er Version von OOo verwenden. Lade dir doch die aktuelle HSQLDB Version direkt von deren Projektseite herunter und verweise auf das JAR dann in deiner Batch-Datei und in der OOo Base Datei baust du eine JDBC-Verbindung zu der Datenbank auf. Und zweitens würde ich die ganzen Create-Befehle zum Anlegen der Tabellen als SQL schreiben und ausführen (Tools dafür siehe meinen vorherigen Beitrag hier). Deine Abfragen kannst du dann trotzdem mit OOo Base schreiben.
mhonline
**
Beiträge: 24
Registriert: Di, 24.04.2007 15:31

Re: Base HSQL mehrbenutzerfähig

Beitrag von mhonline »

hol.sten hat geschrieben:Lade dir doch die aktuelle HSQLDB Version direkt von deren Projektseite herunter und verweise auf das JAR dann in deiner Batch-Datei und in der OOo Base Datei baust du eine JDBC-Verbindung zu der Datenbank auf.
Hey Hol.sten
zu 2.0: Das hast Du ausprobiert?
Übrigens: Der Primkey-Fehler stammt nicht von der HSQL-DB, die könnte das wohl und es hat mit alten OOO-Versionen funktioniert, das ist selbstgebasteltes Entwicklerchaos von OOO, welches man zu spüren kriegt, wenn die Tabellenstruktur geändert wird. desterwegen die Frage.

Martin


Moderation,4: fehlerhaftes Quote korrigiert; Full-Quotes sind unnötig - bitte vermeiden
NTClient
****
Beiträge: 106
Registriert: Di, 19.07.2005 16:09

Re: Base HSQL mehrbenutzerfähig

Beitrag von NTClient »

HSQL Server 2.0 werde ich mal probieren. Woher soll man auch wissen, dass es da noch eine neuere Version von gibt. Ich habe das ganze ja eh erst vor einer Woche anfänglich verstanden.

Wenn man danach im Internet sucht trifft man regelmäßig auf „HyperSQL“ - ist das dasselbe?

Zum Auto-Wert habe ich noch einen Hinweis gefunden:

unter „Bearbeiten“ – „Datenbank“ - „Erweitere Einstellungen“ kann ich – wenn ich als Verbindungsart JDBC ausgewählt habe – Einstellungen zu „Generierten Werten“ machen. In der Hilfe dazu steht was von

„Geben Sie den SQL-Befehlsparameter ein, der die Datenquelle anweist, ein bestimmtes Integer-Datenfeld als Auto-Increment-Datenfeld zu behandeln.“

Gibt es dort eine Lösung zu meinem Problem? Ich habe nur nicht ganz verstanden, was ich da für Ausdrücke reinschreiben soll (ich kenn' mich in SQL ja nur oberflächlich aus). In der Hilfe steht als Beispiel für Auto-Increment-Ausdruck:

CREATE TABLE "table1" ("id" INTEGER AUTO_INCREMENT)

und für Abfrage der generierten Werte:
SELECT LAST_INSERT_D();

Verstanden habe ich, dass der Auto-Increment-Ausdruck im Tabellenentwurf als „Vorlage“ erscheint. Wenn ich im Entwurf dann die Tabelle als „table1“ mit „id“ als Spalte 1 – Primarykey im Format „integer“ abspeichern will, kommt die Fehlermeldung „Unexpected token: [CREATE TABLE „table1“ („id“ INTEGER NOT NULL CREATE]
Muss man für jeden Datenbank-Typ einen eigenen Ausdruck verwenden? Wie lautet der Ausdruck für HSQL-Datenbanken?

ergänzt: Ah, ich glaube der Ausdruck heißt einfach "IDENTITY", richtig? Nur seltsam: in db.script schreibt er "GENERATED BY DEFAULT AS IDENTITY(START WITH 0)".

Gruß Bernd!
hol.sten
******
Beiträge: 871
Registriert: Fr, 18.11.2005 21:21

Re: Base HSQL mehrbenutzerfähig

Beitrag von hol.sten »

NTClient hat geschrieben:HSQL Server 2.0 werde ich mal probieren. Woher soll man auch wissen, dass es da noch eine neuere Version von gibt.
Google fragen?
NTClient hat geschrieben:Wenn man danach im Internet sucht trifft man regelmäßig auf „HyperSQL“ - ist das dasselbe?
Wenn du mal http://hsqldb.org/ ansurfst und in die linke obere Ecke der Webseite schaust, wird dir diese Frage mit einem klaren JA beantwortet.
hol.sten
******
Beiträge: 871
Registriert: Fr, 18.11.2005 21:21

Re: Base HSQL mehrbenutzerfähig

Beitrag von hol.sten »

mhonline hat geschrieben:
hol.sten hat geschrieben:Lade dir doch die aktuelle HSQLDB Version direkt von deren Projektseite herunter und verweise auf das JAR dann in deiner Batch-Datei und in der OOo Base Datei baust du eine JDBC-Verbindung zu der Datenbank auf.
zu 2.0: Das hast Du ausprobiert?
Ich hatte zunächst ausprobiert, das hsqldb.jar in Version 1.8.0.x von OOo einfach gegen ein aktuelles hsqldb.jar in Version 2.0 auszutauschen. Das ging leider nicht (viewtopic.php?p=144765#p144765). Dann bekommt man schon beim Aufbauen der DB-Connection eine NullPointerException. HSQLDB im Server-Modus betreiben und dann eine JDBC-Verbindung aufbauen stellt allerdings kein Problem dar.
NTClient
****
Beiträge: 106
Registriert: Di, 19.07.2005 16:09

Re: Base HSQL mehrbenutzerfähig

Beitrag von NTClient »

So: läuft fast alles, bis auf ein Rechner, der will nicht: „Die Treiberklasse org.hsqldb.jdbcDriver konnte nicht geladen werden.

Nochmal zum Verständnis: Auf dem „Server“ läuft folgendes script:

set javapath=C:\Program Files\Java\jre6\bin\Java.exe
set jarpath=C:\Program Files\openoffice\basis\program\classes\hsqldb.jar
"%javapath%" -cp "%jarpath%" org.hsqldb.Server -database.0 file:mydb

Von den Clients wird mittels

OO-Base,
Verbindungsart: JDBC,
DatequellenURL: hsqldb:hsql://IP-Adresse/;default_schema=true,
Treiberklasse: org.hsqldb.jdbcDriver

auf die Datenbank zugegriffen. Die entsprechende OO.odb liegt auch auf dem Server, damit nicht auf allen Clients diese Einstellungen wiederholt werden müssen.

Wie sag ich nun dem Client, wo er org.hsqldb.jdbcDriver finden soll.

Schätze, dass es mit der JRE zusammenhängt!? Obwohl auf dem Rechner, wo es nicht klappt das gleiche JRE läuft und auch die gleiche hsqldb.jar zugewiesen wurde.

Noch mal zum Verständnis:
Ist jetzt „ org.hsqldb.jdbcDriver“ die Treiberklasse oder „hsqldb.jar“?

Gruß Bernd!
hol.sten
******
Beiträge: 871
Registriert: Fr, 18.11.2005 21:21

Re: Base HSQL mehrbenutzerfähig

Beitrag von hol.sten »

NTClient hat geschrieben:Die entsprechende OO.odb liegt auch auf dem Server, damit nicht auf allen Clients diese Einstellungen wiederholt werden müssen.
Jeder Client sollte seine eigene odb Datei haben. Andernfalls gibt es Probleme beim parallelen Zugriff.
NTClient hat geschrieben:Noch mal zum Verständnis: Ist jetzt „ org.hsqldb.jdbcDriver“ die Treiberklasse oder „hsqldb.jar“?
org.hsqldb.jdbcDriver ist die Treiberklasse für HSQLDB.
hsqldb.jar ist die JAR-Datei (Java ARchiv-Datei, siehe hierzu auch http://de.wikipedia.org/wiki/Java_Archive), die die Treiberklasse org.hsqldb.jdbcDriver enthält. Das kannst du mit einem beliebigen Packprogramm überprüfen.
NTClient hat geschrieben:So: läuft fast alles, bis auf ein Rechner, der will nicht: „Die Treiberklasse org.hsqldb.jdbcDriver konnte nicht geladen werden.
Frage: Hast du in deinem Namen der Treiberklasse am Anfang oder Ende Leerzeichen drin? Das macht Probleme. Wenn ich den Namen org.hsqldb.jdbcDriver in meinem OOo 3.2.0 unter Ubuntu 10.04 ohne Leerzeichen in das Feld für die Treiberklasse kopiere erhalte ich beim Test der Treiberklasse die Meldung, dass der JDBC Treiber erfolgreich geladen werden konnte.
NTClient
****
Beiträge: 106
Registriert: Di, 19.07.2005 16:09

Re: Base HSQL mehrbenutzerfähig

Beitrag von NTClient »

Nee, anders: Wenn man die Einstellungen geändert hat, muß man OO neu starten (wird ja auch so drauf hingewiesen). Das heißt aber nicht nur BASE neu starten, sondern auch den OO-Schnellstarter beenden und neu starten.

Dann funktioniert alles!

Aber ich hörte, auch Einstein habe mal lediglich vergessen, den Stecker in die Steckdose einzustecken.

Gruß Bernd!
Benutzeravatar
herz4
****
Beiträge: 145
Registriert: Mi, 29.09.2010 13:41

Re: Base HSQL mehrbenutzerfähig

Beitrag von herz4 »

:D Ich danke den mir helfenden (fragenden wie antwortenden) Forumsmitgliedern: auch ich :lol: habe es durch deren Beiträge geschafft, Base (durch externes HSQLDB 2.0) mehrbenutzerfähig zu machen.

Schade, dass durch die Hinzunahme des hsqldb.jar-Archivs (von HSQL 2.0) meine zahlreichen "alten" internen (.odb) Datenbanken durch Base nicht lesbar sind. Ich muss also für den weiter gewünschten Zugriff auf diese genanntes Archiv in den Java-Einstellungen heraus-, für die externen wieder hereinnehmen. Ein umständliches Prozedere was mich nach Lösungsmöglichkeiten hat suchen lassen, weil ich vorerst beide Zugriffe brauche. Mir fiel zufällig auf, dass OpenOffice (3.2.1) bzw. auch Base nicht "meckert" (Fehlermeldung oder ähnlich), wenn der Zugriff auf das unter Java eingetragene Archiv etwa deshalb nicht möglich ist, weil es nicht da ist!

Somit starte ich eine Batch-Datei - seit Jahren mal wieder so etwas wie DOS! -, "rename" das Verzeichnis zum Archiv je nach angefragter Int- oder Ext-HSQLDB und starte dann OpenOffice. Ich finde diese Lösung TGL-gerecht und also verbesserungs-, besser ersetzenswürdig. Nur wie?

Eigentlich wäre es schön, wenn HSQL 2.0 in Base integriert würde ...

... und noch eins: Die "alten" ordinären Base-Datenbanken kann man HSQL 2.0 konform konvertieren, indem man den Container .odb entpackt, die darin enthaltenen script-Dateien umbenennt, zunächst mit HSQL 1.8.0 (extern :shock: ) öffnet, und per shutdown script wieder schließt! Geht vielleicht alles nur auf meiner winxp-Möhre ... ?
LinuxMint 13 maya, LibreOffice 4.1 mit externer HSQLDB 2.3.2
NTClient
****
Beiträge: 106
Registriert: Di, 19.07.2005 16:09

Re: Base HSQL mehrbenutzerfähig

Beitrag von NTClient »

... versteh ich nicht. Ich kann meine ordinären, alten Base-Dateien nach wie vor öffnen. Außerdem kann man doch mehere Archive hinzufügen. Mag aber auch sein, dass ich da was nicht richtig verstanden habe.
Gruß Bernd!
Benutzeravatar
herz4
****
Beiträge: 145
Registriert: Mi, 29.09.2010 13:41

Re: Base HSQL mehrbenutzerfähig

Beitrag von herz4 »

Hallo Bernd,

ich danke Dir für Deine Frage.

Ich glaube eher, dass ich etwas nicht verstanden habe und bei mir was nicht richtig läuft. Also, ich habe im OOBase-Menü Extras>Optionen>OpenOffice.org>Java einen einzigen Eintrag angezeigt bekommen: "Sun Micro ...", "Version 1.6.0_21". Dem waren keine Parameter oder Class Path zugeordnet. So konnte und kann ich nach wie vor die ordinären Base (.odb) Dateien öffnen und bearbeiten. Weil ich aber eine Mehrplatzlösung anstrebe, installierte ich HSQLDB 2.0 (in ein unabhängiges Verzeichnis) und legte extern (ohne Base) Datenbanken an. Auf diese kann ich auch von Base aus zugreifen, wenn ich zunächst vor dessen eigentlichem Start im vorgenannten Menü dieser Java-Umgebung den Class Path mit dem hsqldb.jar-Archiv von HSQLDB 2.0 zuordne. Geht.

Und nun - für mich auch schwerer verständlich - kann ich nicht mehr auf die .odb-Dateien zugreifen. Zwar öffnet Base diese Dateien noch, aber wenn ich dann auf Tabellen direkt oder auch über Formulare zugreifen will kommt es zum Fehler: SQL-Status: S1000, Fehler-Code: -458, java.lang.NullPointerException. Der richtige, oder volle Zugriff klappt für mich erst wieder, wenn ich den Class Path wie vor entferne.

Nur deshalb habe ich die umständliche Umschaltung zwischen ext-int per Batch-Datei "erfunden".

Ich würde mich riesig freuen, wenn mir jemand erklärte, was ich falsch mache.

MfG, René
LinuxMint 13 maya, LibreOffice 4.1 mit externer HSQLDB 2.3.2
hol.sten
******
Beiträge: 871
Registriert: Fr, 18.11.2005 21:21

Re: Base HSQL mehrbenutzerfähig

Beitrag von hol.sten »

herz4 hat geschrieben:Ich würde mich riesig freuen, wenn mir jemand erklärte, was ich falsch mache.
Du hast einfach nur einen anderen Weg eingeschlagen als NTClient. Dein Weg scheint sich an dem hier beschriebenen zu orientieren: NTClient hingegen startet den HSQLDB-Server per BAT-Datei, ohne ein neues hsqldb.jar dem CLASSPATH von OOo hinzuzufügen. Daher gibt es bei NTClient auch kein Problem mit dem Wechsel zwischen HSQLDB 1.8 und 2.0.
Benutzeravatar
herz4
****
Beiträge: 145
Registriert: Mi, 29.09.2010 13:41

Re: Base HSQL mehrbenutzerfähig

Beitrag von herz4 »

@hol.sten

Danke für die zahlreichen Verweise zu Forenbeiträgen, die mich in meinem ein paar Jahre zurückliegendem Schulenglisch bis zur Leistungsgrenze fordern. Ich hatte bereits am Wochenende darin gestöbert und mich in meinem Problem bestätigt gefühlt.

Gehe ich recht in meinem Verständnis, NTClient "umschifft" mein Problem, indem er Base selbst gar nicht anderes als maximal HSQLDB 1.8.0 (oder noch 1.8.1.3?) intern verschafft, die externen Datenbanken aber über HSQLDB 2.0.0 (oder auch schon 2.0.1?) hostet und mit Base als Client auf diese zugreift? Oder anders, funzt das prinzipiell, wenn Base noch nicht HSQL 2.0-fähig ist?

Mittlerweile habe ich ein neues Problem: Meine (Einbahnstraßen-)Konvertierung von interner .odb Datei hin zu HSQLDB 2.0 extern funzte. Auch ist Base mit zusätzlichem JavaPath zu 2.0 in der Lage, die Datenbank zu bedienen. Jedoch dauert der Datenzugriff viel, viel zu lange! Ich arbeite u. a. mit einem Formular, das ca. 6...7 Unterformulare in sich referenziert. Bisher, interner .odb und also HSQL 1.8(...?) dauerte das Laden der Unterformulare beim Wechsel von einem Datensatz der obersten Ebene zu einem nächsten gerade so lange, dass man es merkte (etwa weniger als 1s). Jetzt - wohlgemerkt unter HSQL 2.0 - dauert dies länger als 7s! Der eigentliche Aufbau des Formulars beim Aufrufen dauert noch länger. Zunächst deaktivierte ich alle Makros und ähnliches; keine(!) Verbesserung.

Letztendlich konvertierte ich von meinen Sicherheitskopien erneut extern aber nur unter HSQL 1.8.1.3 - und da gehts, Base arbeitet damit wie bisher, nur eben extern! Und ohne jegliche Deaktivierung. Nun vermute ich, das Base da irgendwie "hakelt", wenn ich ihm den HSQL 2.0 Treiber vorsetze?! :(

Wie immer freut sich auf Hilfe

René
LinuxMint 13 maya, LibreOffice 4.1 mit externer HSQLDB 2.3.2
hol.sten
******
Beiträge: 871
Registriert: Fr, 18.11.2005 21:21

Re: Base HSQL mehrbenutzerfähig

Beitrag von hol.sten »

herz4 hat geschrieben:Gehe ich recht in meinem Verständnis, NTClient "umschifft" mein Problem, indem er Base selbst gar nicht anderes als maximal HSQLDB 1.8.0 (oder noch 1.8.1.3?) intern verschafft, die externen Datenbanken aber über HSQLDB 2.0.0 (oder auch schon 2.0.1?) hostet und mit Base als Client auf diese zugreift?
Richtig!
herz4 hat geschrieben:Oder anders, funzt das prinzipiell, wenn Base noch nicht HSQL 2.0-fähig ist?
Auch richtig. Wie die externe HSQL-DB dabei anzusprechen ist, gibt man dann ja über die Konfiguration der JDBC-Connection an.
herz4 hat geschrieben:Mittlerweile habe ich ein neues Problem: ...
Zu dem Problem kann ich leider gar nix sagen, da ich mich bisher noch nie mit BASE Formularen beschäftigt habe.
Benutzeravatar
herz4
****
Beiträge: 145
Registriert: Mi, 29.09.2010 13:41

Re: Base HSQL mehrbenutzerfähig

Beitrag von herz4 »

@hol.sten

Dankeschön.

Im englischsprachigen Forum http://www.oooforum.org/forum fand ich einen Beitrag, der mich mit meinen schlechten Englischkenntnisse vermuten läßt, mindestens ein User hat ein ähnlich gelagertes Problem mit oOBase als Frontend für eine H2-Datenbank. Dort wird als Lösung angegeben, auf oO 3.1.1 zu downgraden, dann ging 's. Vorsicht: mein Schulenglisch ist veraltet ...

Noch bin ich zu "faul" dies auszuprobieren. Wäre schön, wenn jemand meine Faulheit unterstützte, indem er seine Erfahrung - positive wie ähnlich negative - posten würde. Entweder ermunterte es mich zum Downgrade oder hoffentlich zu einer zukunftsweisenderen Lösung.

Ich bleibe neugierig und wünsche mir weitere Neugierige :roll: ...

MfG, René
LinuxMint 13 maya, LibreOffice 4.1 mit externer HSQLDB 2.3.2
Gesperrt