Wie verbinde ich
Star/OpenOffice.org mit einer MYSQL Datenbank
via JDBC ohne ODBC?
Dieses Dokument soll eine einfache Anleitung sein, wie ich (unter Windows) eine MySQL-Datenbank benutzen kann, ohne über ODBC darauf zugreifen zu müssen.
Unter www.mysql.org/downloads gibt es die Datenbank und ein grafisches Frontend MySQLGUI. Außerdem die aktuellen JDBC-Treiber. Damit hat man allerdings nur schreibenden Zugriff über StarBasic oder direkte SQL-Kommandos. Weil ich das für die zweitbeste Lösung halte, habe ich den Treiber etwas angepasst, damit OpenOffice.org auch damit arbeiten kann. Er findet sich normalerweise unter kienlein.com/pages/oo.html.
Eine wirklich gute Möglichkeit MySQL zu verwalten ist PHPMyAdmin, wozu man allerdings einen laufenden Webserver braucht. Aber auch das ist überhaupt kein Problem, wenn man z.B. PHPTriad oder Foxserver benutzt. Beide sind dazu da, um unter Windows möglichst einfach einen Apache-Webserver, eine MySQL-DB und PHP mit PHPMyAdmin zu installieren.
Beide findet man unter sourceforge.net/projects/foxserv bzw. sourceforge.net/projects/phptriad.
Hier beschreibe ich PHPTriad, da dieses Paket kleiner ist und bis auf die JDBC-Treiber bereits alles dabei ist.
Nach Ausführen des Installationsprogrammes besitzt man einen für lokale Belange (weil ziemlich ungeschützt) geeigneten Apache Webserver mit PHP und PHPMyAdmin + einer MySQL Datenbank. Aber für unsere Zwecke hervorragend geeignet. Als Hauptbenutzer ist standardmäßig root mit leerem Passwort vergeben. Also evtl. ändern bzw. neue Benutzer erstellen und entsprechende Passwörter vergeben. (Aber erst nachdem alles mal läuft und man sich mit einer richtigen Datenbank und mit deren Möglichkeiten besser auskennt.)
Mit einem Browser und der Adresse localhost sollte man überprüfen, ob Apache und PHP läuft. Auch PHPMyAdmin aufrufen, ob MySQL läuft.
Ansonsten über Start - Programme - PHPTriad - Apache und MySQL starten. Außerdem sind bei einer Standard-Installation evtl. die Programme winmysqladmin.exe und mysqlmanager.exe sowie evtl. mysql.exe (aus einer DOS-Konsole aufzurufen) hilfreich. Diese finden wir im /bin Verzeichnis also c:\apache\mysql\bin.
Diese Programme benutzen wir aber nur solange, bis MySQL läuft, da das Frontend über PHPMyAdmin wesentlich einfacher zu bedienen ist.
Über PHPMyAdmin erstellen wir nun eine neue Datenbank z.B. „mydb“ und legen anschließend eine Tabelle „personen“ mit den folgenden Feldern an. (Hier der SQL String, den man auch aus OpenOffice.org absetzen könnte.)
Außerdem definieren wir p_id als Primary-Key.
CREATE
TABLE personen (
p_id int(10) NOT NULL AUTO_INCREMENT,
p_nr
int(10),
p_anrede char(20),
p_titel char(20),
p_vname
char(30),
p_name char(30),
p_strasse char(30),
p_hnr
char(10),
p_land char(3),
p_plz char(5),
p_ort
char(30),
p_zusatz char(50),
p_art smallint(6),
p_tel1
char(20),
p_tel2 char(20),
p_telm char(20),
PRIMARY KEY
(p_id)
);
Da OpenOffice.org aber derzeit offensichtlich noch leichte Probleme mit der Erstellung und Pflege der Tabellen über JDBC hat, nimmt man besser eben PHPMyAdmin oder setzt aus OpenOffice.org ein direktes SQL-Statement ab. Das funktioniert dann wenigstens.
Als nächstes gilt es den JDBC-Treiber zu installieren. Wir haben uns eine Datei geladen, die ungefähr „mysql-connector-java-3.0.0“ heisst. Dies ist eine gepackte Datei, die sowohl die eigentliche Treiber-Datei als auch die Source-Codes dazu beinhaltet (falls jemand das ganze selber kompilieren möchte). Zum Entpacken kann man auch FILZIP (www.filzip.de) hernehmen, falls man noch keinen Entpacker hat. Wir haben dann irgendwo ein Verzeichnis „mysql-connector-java-3.0.0“ Darin befindet sich neben den Sourcen auch der eigentliche Treiber „mysql-connector-java-3.0.0.jar“. Diese Datei kopieren wir einfach in irgendein Verzeichnis, vorzugsweise in das lib/ext -Verzeichnis der installierten Java-Runtimeumgebung, dann erübrigt sich nämlich das umständliche setzen der ClassPath Variablen. Damit das funktioniert, sollte man aber sicherstellen das die jeweilige java.exe geladen wird. Falls sich unter Windows im system32 Verzeichnis eine java.exe befindet, diese einfach löschen oder umbenennen.
Falls man nicht den Weg über das externe Verzeichnis geht, muss dieser Treiber dann noch OpenOffice.org bekannt gemacht werden.
Seit Version 641D geht das ganze ziemlich einfach.
Unter: Extras - Optionen, Bereich „OpenOffice.org“, „Sicherheit“
Bei: „ClassPath“ den Pfad auf die jeweilige „meineTreiberDatei.jar“ Datei eingeben.
Wirklich diese Datei und nicht nur das Verzeichnis, in der sie sich befindet angeben! Anschließend OpenOffice.org einmal beenden. Achtung, den Quickstarter in der Taskleiste (Windows) nicht vergessen!
Nun können wir OpenOffice.org starten.
Über Extras - Datenquellen kommen wir in das Menü zur Datenbankverwaltung.
Dort wählen wir „Neue Datenquelle“.
Unter Allgemein:
Name: JDBCTest1 (=frei zu vergeben)
Verbindung:
Datenbanktyp: JDBC
Datenquellen-URL:
jdbc:mysql://localhost/mydb
Wobei
localhost auch ein DNS-Name im Netz oder der DNS-Name des eigenen
Rechners ist. mydb ist der Name der Datenbank, die wir vorher über
PHPMyAdmin erstellt haben.
Unter JDBC:
JDBC
Treiberklasse:org.gjt.mm.mysql.Driver
(=alter Treiber)
oder: com.mysql.jdbc.Driver
(=neuer Treiber)
oder: com.kienlein.jdbc.Driver
(= mein Treiber mit Schreibrechten für OpenOffice.org)
URL: jdbc:mysql://localhost/mydb (normalerweise nun schon vorbelegt)
Benutzername: root (falls wir in der Benutzerverwaltung von MySQL noch nichts geändert haben)
Passwort erforderlich: lassen wir dann frei.
Zeichensatz: System (kann man später bei Bedarf immer noch ändern)
Wenn man nun auf „Tabellen“ geht, sollte unter „Alle Tabellen“ zumindest unsere Personen-Tabelle erscheinen. Hier kann man dann auch weitere Tabellen, Abfragen und Verknüpfungen erstellen. In dieses Menü kommt man übrigens sehr leicht mit <F4>.
Somit hat man eine laufende MySQL Datenbank über JDBC angebunden und kann diese auch für Serienbriefe etc. benutzen.
Nun brauchen wir noch die richtigen Schreibrechte. Dazu muss die Tabelle in der table_priv Tabelle von MySQL eingetragen sein. Das kann man entweder mit PHPAdmin oder mit dem Kommandozeilen-Tool mysql.exe machen. Da setzt man einfach ein GRANT ALL PRIVILEGES ON <IhrTabellenName> to <IhrOOoBenutzerName> ab.
Ein Problem hat OpenOffice.org allerdings noch mit den Auto-Increment Feldern. Die werden zwar vom JDBC Treiber und der Datenbank korrekt ausgeführt, OpenOffice.org bekommt das aber irgendwie nicht mit. Bis dahin lassen wir einfach AUTO_INCREMENT bei der Tabellenerstellung weg. Obige Tabellenstruktur kann man aber mit meinem DB-Monitor verwenden. Das ist ein Basic-Dialog, der zeigt, wie man damit auf MySQL zugreift. Das Script gibt es auch unter kienlein.com/pages/oo.html.
Falls hier etwas verbesserungswürdig oder schlichtweg falsch ist, bin ich für jede Anregung dankbar. Ich habe diese Zeilen nur zusammengeschrieben, weil ich selbst lange genug herumprobiert und keine vernünftige Doku gefunden hatte.
Autor : Hermann Kienlein (hermann@kienlein.com)
Korrektur gelesen: Andre Schnabel (AndreSchnabel@openoffice.org)
letzte
Änderung:
Kontakt : OpenOffice.org Documentation Project documentation.openoffice.org
OpenOffice.org deutschsprachig de.openoffice.org