Oft fristet das Datenbankmodul Open Office Base sein Dasein als Access-Ersatz, das normalen Benutzern mit grafischen Assistenten die Arbeit mit Datenbanken erlaubt. Doch über JDBC und ODBC klinkt sich die leistungsfähige Datenbankanwendung mit wenig Aufwand auch in bestehende Business-Infrastrukturen ein.
Seit Version 2 enthält Open Office ein komfortabel zu bedienendes Datenbankmodul. Als Unterbau nahmen die Entwickler zunächst die kostenlose LiteSQL-Datenbank ins Visier, doch letztlich überzeugte der Funktionsumfang der ebenfalls freien HSQLDB [1] die Programmierer. Hinter dem kaum aussprechbaren Namen verbirgt sich eine in Java programmierte Open-Source-Datenbank, die auch im Applikationsserver JBoss ihren Dienst tut.
Teamfähig
Soll Open Office Base jedoch mit bereits vorliegenden Daten arbeiten, die beispielsweise in einer MySQL-, PostgreSQL-, DB2- oder Oracle-Datenbank liegen, bietet es sich an, die externe Engine einzubinden, statt die Daten über eine CSV-Datei oder ein anderes Austauschformat zu importieren. Andere Anwendungen können dann wie bisher auf die Daten zugreifen. Dem Anwender bleibt es erspart, sich mit den unterschiedlichen SQL-Dialekten der Datenbank-Engines zu beschäftigen. Wer mit der grafischen Anwendung Base ein Datenbankschema erstellt, kann außerdem auf Schemazeichnungen verzichten.
Standardschnittstellen
Bevor Open Office auf einen fremden Datenbestand zugreifen kann, ist allerdings Handarbeit angesagt. Denn von Haus aus versteht Base nur das veraltete Dbase-Format vollständig (vergleiche Kasten “Native Treiber”), von der Anwendung selbst angelegte Datenbankdateien mit der Endung ».odb«, Tabellendokumente aus Excel oder Calc sowie kommaseparierte Textdateien. An alle weiteren Datenbanken dockt Base über JDBC beziehungsweise ODBC an. Beide Abkürzungen stehen für standardisierte Programmierschnittstellen, über die ein Programm SQL-Befehle an die Datenbank verschickt.
|
Native Treiber |
|---|
|
Unter [9] stehen für PostgreSQL-, Access- (MDB) und SQLite-Datenbanken native Open-Office-Treiber zur Verfügung. Mit ihrer Hilfe greift das Büropaket direkt auf die genannten Datenbanken zu. Leider sind diese nativen Treiber teilweise schon veraltet oder unterstützen nur einen Teil der von der Datenbank bereitgestellten Funktionen. Die Installation läuft bei allen drei Treibern nach dem gleichen Schema ab, weshalb sie im Folgenden nur am Beispiel des PostgreSQL-Treibers vorgestellt werden soll. Zunächst lädt man den Treiber »postgresql-sdbc-x.y.z.zip« unter [10] herunter, startet anschließend Open Office und ruft den Menüpunkt »Extras | Package Manager…« auf. Weiter geht es über »Hinzufügen«. Im neuen Fenster ist die heruntergeladene Datei auszuwählen (nicht vorher entpacken). Der Treiber installiert sich nun selbstständig und erscheint anschließend mit dem Status »aktiviert« in der entsprechenden Liste (Abbildung 3). Nach einem Neustart von Open Office ruft der Anwender den Einrichtungsassistenten von Base auf, aktiviert »Verbindung zu einer bestehenden Datenbank herstellen« und wählt in der Liste darunter den neuen Treiber »postgresql«. Über »Weiter« geht es zu dessen Konfiguration. In das Eingabefeld gehören der Name des Servers und der zu nutzenden Datenbank. Der Eintrag erfolgt dabei wie bei dem folgenden Beispiel: »dbankname=Buecherdatenbank host=Mein.server.de«. Weitere mögliche Optionen stehen auf der PostgreSQL-Seite unter [11]. Alle nachfolgenden Schritte entsprechen dem hier vorgestellten Vorgehen. |
Zwar existiert die ODBC-Schnittstelle in Open Office schon länger. Neben der etwas einfacheren Einrichtung spricht dennoch für JDBC, dass viele Datenbankhersteller diese Schnittstelle bevorzugt behandeln. Unter Linux gilt deshalb nach wie vor die Daumenregel: Wenn der Hersteller sowohl einen ODBC- als auch einen JDBC-Treiber anbietet, sollten Anwender dem letzteren zunächst den Vorzug geben.
JDBC
JDBC (Abbildung 1) benötigt für jeden Datenbanktyp einen eigenen Treiber, der, anders als der für ODBC, aus einer einzigen Datei mit der Endung ».jar« besteht. Der Anwender meldet sie direkt in Open Office an. Wie bei ODBC muss er den JDBC-Treiber meist von der Webseite des Datenbankherstellers herunterladen. MySQL führt ihn beispielsweise unter dem Namen Connector/J in der Rubrik »Drivers« auf seinen Internetseiten [2]. Einige Distributionen legen ihn im Paket »mysql-connector-java« bei. Die noch recht neue Datenbank H2 [3] bringt ihren JDBC-Treiber bereits in der Datei »h2.jar« selbst mit.
Voraussetzung ist ein installiertes Java Runtime Environment (JRE), das zusätzlich noch in Open Office aktiviert sein muss. Bei einer Standardinstallation ist dies meist der Fall. Gewissheit gibt der Dialog »Extras | Optionen…« im Bereich »OpenOffice.org | Java«.
Der Menüpunkt »Extras | Optionen…« öffnet den nun benötigten Einstellungsdialog. Über den Button »Class Path…« im selben Menü (Abbildung 2) fügt der Anwender das im gleichen Verzeichnis entpackte Jar-Archiv des JDBC-Treibers hinzu. Findet er im Dialog »Class Path« bereits eine ältere Version des gleichen Treibers, muss er diese unbedingt entfernen, da es sonst beim Arbeiten mit der Datenbank zu unvorhersehbaren Seiteneffekten kommen kann.
ODBC
Funktioniert die JDBC-Verbindung zum gewünschten Datenbanktyp nicht oder ist kein JDBC-Treiber verfügbar, bietet sich als Alternative die zum größten Teil von Microsoft für Windows entwickelte ODBC-Schnittstelle (Open Database Connectivity) an. Die unter der LGPL stehende Software Unix ODBC stellt die Datenbankschnittstelle aber auch auf Linux-Systemen zur Verfügung [4]. Unix ODBC liegt den meisten Distribution von Haus aus bei.
Die Installation des Programmpakets ist aber nur die halbe Miete. Zusätzlich ist für jede zu nutzende Datenbank-Engine ein so genannter ODBC-Treiber erforderlich. Abbildung 4 zeigt die Struktur einer ODBC-Anbindung: Open Office schickt eine Datenbankabfrage an Unix ODBC, dieses ruft den passenden Treiber auf, der nun direkt mit der Datenbank kommuniziert.
Leider liefern manche Datenbankhersteller entweder einen ODBC-Treiber nur für Windows oder die Qualität des Linux-Treibers ist mangelhaft oder nur auf die Kernfunktionen beschränkt. Auch wenn sich die Lage im Laufe der Jahre gebessert hat, bleibt in Einzelfällen nach wie vor nur der Griff zu Treibern von Drittherstellern wie beispielsweise Easysoft [5]. Für alle großen Datenbanken, etwa für DB2 oder MySQL, sind die Seiten des Herstellers der erste Anlaufpunkt. Im Falle von MySQL heißt der entsprechende ODBC-Treiber Connector/ODBC [6]. PostgreSQL-Nutzer greifen zum Paket »psqlodbc« [7], SQLite-Anwender finden unter [8] einen Treiber für ihre Datenbank.
Glücksache
In seltenen Fällen installieren und registrieren sich die ODBC-Treiber automatisch. Dem von MySQL liegt für diese Aufgabe beispielsweise das etwas umständlich zu bedienende Programm »myodbc3i« bei. Gewöhnlich muss der Anwender den Treiber jedoch per Hand in den Konfigurationsdateien von Unix ODBC anmelden. Dabei hilft das grafische Konfigurationsprogramm ODBC-Config beziehungsweise sein auf GTK basierender Kompagnon GODBC-Config. Beide Helfer liegen zwar dem Unix-ODBC-Quelltextpaket bei, fehlen jedoch merkwürdigerweise in einigen Distributionspaketen. Da ODBC-Config aber ohnehin lediglich die Einträge der Konfigurationsdateien in grafischer Form abfragt, bietet ein einfacher Texteditor vollwertigen Ersatz.
Treibersalat
Jeder ODBC-Treiber besteht aus zwei Teilen, dem eigentlichen Treiber in Form einer normalen Bibliothek, beispielsweise »libmyodbc3.so« bei MySQL, und einer zweiten Bibliothek, der so genannten Setup-Datei, die bei der Einrichtung des Treibers in einem grafischen ODBC-Konfigurationsprogramm hilft. Da Open Office diese Möglichkeit nicht nutzt, ist dafür aber Handarbeit gefragt.
Die Setup-Datei trägt gewöhnlich ein großes S am Ende ihres Dateinamens, beispielsweise »libodbcmy3S.so« im Fall von MySQL. Wer diese Bibliotheken nicht per Hand installiert, muss zunächst deren Lage im Dateisystem ausfindig machen. Auch der Speicherort der Unix-ODBC-Konfigurationsdateien ist von Distribution zu Distribution unterschiedlich. Meist liegen sie unter »/etc« oder »/usr/local/etc«, Open Suse packt sie unter »/etc/unixODBC«.
Die Datei »odbcinst.ini« enthält für jeden ODBC-Treiber einen eigenen Abschnitt. Er beginnt stets mit einer Überschrift in eckigen Klammern, die dem Treiber gleichzeitig einen frei wählbaren Namen zuweist (Listing 1). Der sollte möglichst aussagekräftig ausfallen, da er bei der Einrichtung der Datenbankverbindung wieder auftaucht. Die darauf folgenden drei Zeilen enthalten die Beschriftung und die Pfadangaben der beiden zum Treiber gehörenden Bibliotheken. Das Listing 1 zeigt eine vollständige MySQL-Konfiguration.
|
Listing 1: |
|---|
01 [MySQL] 02 Description = MySQL ODBC Driver 03 Driver = /usr/lib/odbc/libmyodbc3.so 04 Setup = /usr/lib/odbc/libodbcmy3S.so 05 CPTimeout = 06 CPReuse = 07 FileUsage = 1 |
Das für Linux-Verhältnisse ungewöhnliche Format der Konfigurationsdateien ist Folge des aus der Windows-3.0-Welt herrührenden ODBC-Standards.
Verbindungshilfe
Ist die Verbindung zu einer Datenbank-Engine in »odbcinst.ini« konfiguriert, benötigt jede Datenbank, die mit der Base Kontakt aufnehmen soll, einen Eintrag in »odbc.ini«. Alternativ zur systemweiten Konfigurationsdatei funktioniert hier auch »~/.odbc.ini«. Wie in der Konfiguration der Datenbank-Engines beginnt jeder Abschnitt mit einer Überschrift in eckigen Klammern, die der Verknüpfung den Namen zuweist (Listing 2). Welche Einträge ihr folgen, hängt vom verwendeten ODBC-Treiber beziehungsweise dem jeweiligen Datenbankserver ab. Mindestens anzugeben sind:
- Der Name des Treibers hinter »Driver =«, der der
Überschrift aus der Datei »odbcinst.ini«
entspricht - Eine frei wählbare Beschreibung hinter »Description
=« - Der Name der zu nutzenden Datenbank hinter »Database
=« - Hinter »Servername =« der Name des Computers, auf
dem die Datenbank läuft
In Listing 2 ist eine fertige MySQL-Konfiguration nachzulesen.
|
Listing 2: |
|---|
01 [MySQL-Buecherdatenbank] 02 Description = MySQL Buecherdatenbank 03 Driver = MySQL 04 Server = localhost 05 Database = buecherdatenbank 06 Port = 3306 07 Socket = 08 Option = 3 09 ReadOnly = No |
Ist die JDBC- oder ODBC-Verbindung eingerichtet, muss der Benutzer sicherstellen, dass der Datenbankserver läuft und die Datenbanken, auf die die Verbindung verlinkt, auch existieren und der in der Verknüpfung eingetragene Benutzer die nötigen Lese- oder Schreibrechte besitzt. »Datei | Neu | Datenbank« öffnet den Einrichtungsassistenten in Open Office. Mit den voreingestellten Werten benutzt der Wizard allerdings die integrierte HSQLDB-Engine. Jede so erzeugte Datenbank speichert Base in einer eigenen XML-Datei mit der Endung ».odb«.
Aktiviert der Anwender hingegen das Kontrollkästchen »Verbindung zu einer bestehenden Datenbank herstellen«, zeigt Base eine Liste von Verbindungstypen, die die Anwendung beherrscht. Sie enthält Einträge für eine JDBC- oder ODBC-Verbindung.
Abgekürzt
Für MySQL, Oracle und Adabas-D-Datenbanken stehen eigene Einträge zur Verfügung, die das Einrichten verkürzen. Im Fall von MySQL möchte der Assistent nur wissen, ob Base die Verbindung zu MySQL per ODBC oder JDBC aufbauen soll, wie die Datenbank heißt und unter welcher URL sie zu erreichen ist (Abbildung 5). Außer echten Datenbanken importiert der Verknüpfungs-Wizard auch Tabellendokumente im Open-Office- oder Excel-Format. Bei Tabellendokumenten ist die Verknüpfung übrigens dynamisch: Nachträgliche Änderungen in Calc- oder Excel-Dokumenten tauchen auch in der Datenbank auf.

Abbildung 5: Wer als Treiber »MySQL« im Startbildschirm des Assistenten wählt, bekommt schon alle wichtigen Daten vorgegeben. Lediglich den Namen der Datenbank und den Rechnernamen muss er ergänzen.
JDBC-Import
Die Einbindung einer JDBC-Datenquelle erfordert mehr Aufwand als bei ODBC. Bei der Auswahl »JDBC« im Datenbankassistenten fordert die Anwendung zwei Informationen, die unter Umständen das Studium der Dokumentation des verwendeten JDBC-Treibers voraussetzen: In das Feld »Datenquellen-URL« gehört der Pfad zur Datenbank. Die Eingabe folgt dem etwas kryptischen Format »jdbc:Datenbanktyp//URL_zur_Datenbank«. Bei einer MySQL-Datenbank wäre dies »jdbc:mysql://Mein_Server/Datenbankname«. Über die URL »jdbc:hsqldb:file://Pfad_zur_HSQL_Datenbank« lässt sich auch eine externe HSQL-Datenbank einbinden.
Der Button »JDBC Treiberklasse« bezeichnet die Java-Klasse, die den eigentlichen Treiber kapselt. Die Dokumentation des jeweiligen JDBC-Treibers nennt deren Namen. MySQL-Anwender verwenden »com.mysql.jdbc.Driver«, eine HSQL-Datenbank benötigt den Eintrag »org.hsqldb.jdbcDriver«, eine H2-Datenbank »org.h2.Driver«. Ein Klick auf »Klasse testen« überprüft die eingegebenen Informationen (Abbildung 6).

Abbildung 6: Die Verbindung zu einer Datenbank via JDBC erfordert ein paar Angaben, die oft nur über die Dokumentation des Treibers zu ermitteln sind. Der Screenshot zeigt die Verknüpfung mit einer MySQL-Datenbank.
ODBC-Import
Nach Auswahl von »ODBC« im Datenbankassistenten zeigt die Anwendung wie bei »JDBC« ein Eingabefeld für die URL zur Datenbank. Der Button »Durchsuchen« listet alle über Unix ODBC erreichbaren Datenbanken auf (Abbildung 7). Ist die gewünschte Datenquelle nicht darunter, liegt ein Fehler in der ODBC-Konfiguration vor. In diesem Fall sollte der Anwender zunächst alle Konfigurationsdateien auf Tippfehler untersuchen.

Abbildung 7: Base sieht die über ODBC eingebunde MySQL-Datenbank und kann sich mit ihr nach Eingabe von Benutzer und Passwort verknüpfen.
In Kontakt
Nach dem Verbindungsaufbau zu einem Datenbankserver fragt der Assistent nach dem Benutzernamen. Falls dieser Benutzer ein Passwort hinterlegt hat, ist der Punkt »Kennwort erforderlich« zu aktivieren. Open Office Base fordert das Passwort dann immer bei Bedarf an. Ein Verbindungstest überprüft die Verbindung zur Datenbank.
Im vorletzten Screen verlangt der Einrichtungsassistent nach einem Dateinamen, unter dem Open Office diese Verbindung – also alle bis hierhin vorgenommenen Einstellungen – auf dem lokalen Rechner sichert. Auch alle von Open Office erstellten Elemente, die das Paket nicht in der Datenbank einlagern kann, landen hier. Darunter fallen beispielsweise alle Abfragen, Formulare und Berichte. Bei einigen Datei-basierten Datenbanken, zum Beispiel Dbase, kopiert Open Office diese Werte direkt in die Datenbank.
Wenn die Dbase-Datei aus einer früheren Open-Office-Version 1.x stammt, stecken die entsprechenden Formulare und Berichte jeweils in einzelnen Dateien. Bei der Datenübernahme in Open Office 2 darf man sie folglich nicht vergessen. Ist die Verknüpfung zu einer Datenbank hergestellt, können sie alle Office-Komponenten nutzen. [F4] blendet die Datenquellen in Write und Calc ein (Abbildung 8). Open Office listet aktive Verknüpfungen unter »Extras | Optionen…« im Bereich »OpenOffice.org Base | Datenbanken«. Dort lassen sich auch Datenquellen wieder abmelden oder der zugehörige Speicherpfad ändern. Außerdem stehen Einstellungen zum Performance-Tuning zur Verfügung, die der Einrichtungsassistent nicht offenlegt.
![Abbildung 8: Informationsfluss: [F4] blendet in Calc und Write ein kleines Unterfenster ein, das Zugriff auf eingebundene Datenquellen ermöglicht.](https://www.linux-magazin.de/wp-content/uploads/2007/08/abb8_jpg-300x217.jpg)
Abbildung 8: Informationsfluss: [F4] blendet in Calc und Write ein kleines Unterfenster ein, das Zugriff auf eingebundene Datenquellen ermöglicht.
Datenbankfenster
Nach dem Beenden des Datenbankassistenten stellt Base für externe und interne Datenbanken die gleiche grafische Bearbeitungsoberfläche zur Verfügung [12]. Die Statusleiste am unteren Fensterrand verrät, um welchen Datenbanktyp es sich handelt.
Detaillierte Informationen über die Datenbank liefert »Bearbeiten | Datenbank«. Die dort aufgeführten Informationen und Einstellungen teilen sich in drei Gruppen: Unter »Eigenschaften« finden sich Informationen zum verwendeten Datenbanktreiber, der Bereich »Verbindungsart« enthält Daten über die eigentliche Verbindung zu einer bestimmten Datenbank und die »Erweiterten Einstellungen« erlauben einen Zugriff auf Expertenoptionen.
Bedienung!
Sofern die Verknüpfung ohne Fehlermeldungen über die Bühne geht, darf der Benutzer mit der verknüpften Datenbank genau so arbeiten wie mit der eingebauten Datenbank-Engine. Zum Beispiel erstellt der Assistent »Tabelle in der Entwurfsansicht erstellen« für beliebige Datenbank-Backends nach einem aus Benutzersicht stets gleichbleibenden Arbeitsablauf neue Tabellen. Beziehungen zwischen den Tabellen erzeugt der Benutzer grafisch, indem er Verbindungslinien zwischen den entsprechenden Feldern zieht.
Detaillierte Einstellungen erlaubt der Beziehungs-Editor, der allerdings nur mit der eingebauten HSQLDB-Engine zusammenarbeitet. Für Suchanfragen gibt es einen eigenen Abfrage-Editor, der ähnlich wie sein Access-Pendant funktioniert. Profis setzen über »Extras | SQL« direkt SQL-Befehle ab. Eine ausführliche Beschreibung der leistungsfähigen grafischen Datenbankoberfläche, die grafische Datenbankwerkzeuge wie MySQLadmin oder Pgadmin weitgehend überflüssig macht, geben ein LinuxUser- [12] und ein Linux-Magazin-Artikel [13]. Base ermöglicht außerdem den Datenaustausch aller eingebunden Datenbanken untereinander (vergleiche Kasten “Base als Konverter”) sowie mit Tabellen aus Calc oder Excel.
|
Base als Konverter |
|---|
|
Open Office tauscht Inhalte zwischen allen verknüpften Datenbanken und Tabellen aus und konvertiert sie dabei zwischen vielen Formaten. Um beispielsweise die Daten aus einer MySQL-Datenbank in eine Excel-Datei zu überführen, erstellt der Benutzer eine Verbindung mit der Datenbank, übernimmt anschließend in Calc die gewünschte Tabelle mit [F4] und speichert das Ergebnis dann im Calc-, Excel- oder CSV-Format. In besonderen Fällen erfolgt der Datentransfer auf Wunsch auch selektiv auf der Basis einer Abfrage in Open Office. Umgekehrt importiert der Datenbankassistent diese Tabellenformate ebenso problemlos in eine Datenbank. Ein Assistent erlaubt es, bei CSV-Dateien die passenden Feld- und Datensatz-Trennzeichen zu wählen. |
Basis mit Anbindung
Die Datenbank-Komponente Base bietet einerseits eine leistungsfähige grafische Datenbankoberfläche, mit der auch Laien ohne Programmierkenntnisse mit Hilfe der Assistenten kleine Datenbankanwendungen zusammenstellen. Die Anbindung an die JDBC- und ODBC-Schnittstelle rundet den Leistungsumfang der Anwendung ab: Sie bindet Daten aus allen Engines ein, für die es entsprechende Linux-Treiber gibt.
Der etwas umständlichen Registrierung der Treiber, die aber nur beim Einbinden neuer Datenbanktypen erforderlich ist, steht der komfortable Zugriff auf unterschiedliche Engines unter einer einheitlichen Oberfläche gegenüber. Der Leistungsumfang der Open-Office-Datenbank-Komponenten erspart manchem kleinem Unternehmen einen teuren Reportgenerator.
Erfahrene Anwender stoßen allerdings schnell an die Grenzen des internen Datenbankmodells in Base. So gibt das Büropaket bestehende Tabellen ohne Primärschlüssel nicht zum Editieren frei, egal ob der Schlüssel nun für das Design nötig ist oder nicht.
Zudem liegen spezifische Stärken vieler Datenbank-Engines brach. Im Zusammenspiel mit MySQL erzeugt Base beispielsweise ausschließlich Tabellen im MyISAM-Format, die weder referenzielle Integrität noch Transaktionen unterstützen. Teilweise lassen sich die Einschränkungen jedoch durch direkte Eingabe von SQL-Befehlen umgehen. (pkr)
|
Infos |
|---|
|
[1] Java-Datenbank HSQLDB: [http://www.hsqldb.org] [2] JDBC-Treiber für MySQL (Connector/J): [http://dev.mysql.com/downloads/connector/j/] [3] Java-Datenbank H2: [http://www.h2database.com] [4] Unix ODBC: [http://www.unixodbc.org] [5] Easysoft, Hersteller von ODBC-Treibern: [http://www.easysoft.com] [6] ODBC-Treiber für MySQL (Connector/ODBC): [http://dev.mysql.com/downloads/connector/odbc/3.51.html] [7] ODBC-Treiber für PostgreSQL: [http://www.postgresql.org/ftp/odbc/versions/] [8] ODBC-Treiber für SQLite: [http://www.ch-werner.de/sqliteodbc/] [9] In Open Office integrierte Datenbanktreiber: [http://dba.openoffice.org/drivers/index.html ] [10] Open-office-Datenbanktreiber für PostgreSQL: [http://dba.openoffice.org/drivers/postgresql/index.html] [11] Weitere Parameter für den PostgreSQL-Treiber: [http://www.postgresql.org/docs/7.3/static/libpq-connect.html] [12] Datenbanken mit Open Office; Kristian Kißling, “Neue Ordnung”: LinuxUser 6/06 [13] Datenbanken mit Open Office Base; Bernhard Röhrig, “Schnellgericht”: Linux-Magazin 8/06 |
|
Der Autor |
|---|
|
Tim Schürmann ist selbstständiger Diplom-Informatiker und derzeit als freier Autor unterwegs. Zu seinen Büchern gesellen sich zahlreiche Artikel, die in Zeitschriften und auf Internetseiten in mehreren Ländern veröffentlicht werden. |







