Ohne großes Trara veröffentlichte Horst Knorr die Version 0.7.4 seines Datenbanktools Knoda. Doch das Release steckt voll neuer Features: Es bringt Bilder, neue Datenbank-Typen und den oft gewünschten Access-Import.
Sie interessieren sich nicht für Datenbanken? Dann schauen Sie sich doch mal die Beispieldatenbanken picture-example und southstorm auf der LinuxUser Heft-CD an. Mit wenigen Mausklicks zeigt Ihnen Knoda, wozu Datenbanken fähig sind. Ansprechend gestaltete Formulare und Berichte machen selbst das trockene Thema Datenbanken zu einer interessanten Tätigkeit.
Bei so viel Spaß darf natürlich die Installation aus dem Quellcode nicht fehlen. Die Heft-CD liefert dazu die Sourcen von Knoda, Hk_classes und weiteren benötigten Programmen. Benutzer von Suse 9.3 finden passende RPM-Pakete auf der Heft-CD. Egal für welchen Weg Sie sich entscheiden, lesen Sie unbedingt den Kasten “Source Code oder RPM”. Er enthält wichtige Informationen zur Funktionsweise und Installation von Knoda. Die neueste Version des KDE-Datenbanktools finden Sie auf der Projekt-Homepage. [1]
Source Code oder RPM
Knoda dient genau genommen bloß als hübsche Karosserie. Den eigentlichen Motor für das Datenbank-Mobil liefert hk_classes. Diese Bibliothek unterstützt mittlerweile neun verschiedene Datenbanktypen. Davon benutzen die meisten Anwender in der Regel einen oder zwei.
Wieviele Datenbanken Knoda kennt, hängt davon ab, welche Entwicklerpakete die Datenbank-Library hk_classes beim kompilieren findet. Übersetzen Sie das Programm auf einem Rechner, der zum Beispiel die Pakete mysql-devel und postgresql-devel mitbringt, zeigt Knoda später in der Liste der unterstützten Datenbanken diese zwei Einträge an. Sind auch die Entwicklerpakete von Sqlite2 und Sqlite3 vorhanden, lassen sich auch diese Datenbanken mit Knoda bearbeiten.
Kompilieren: Wissen Sie bereits im Vorfeld, mit welchen Datenbanken Sie arbeiten möchten, lohnt es sich, Hk_classes und Knoda (in dieser Reihenfolge) aus dem Quellcode zu kompilieren. Dazu genügen die Befehle ./configure, make und (als root) make install. Achten Sie dabei auf die Ausgabe des Configure-Skripts von hk_classes. Es zeigt Ihnen an, welche Datenbanken Knoda unterstützen wird (siehe Abbildung 1). Ist die gewünschte Datenbank nicht mit dabei, müssen Sie das entsprechende Entwicklerpaket nachinstallieren. Dieses heißt in der Regel datenbank-devel oder libdatenbank, wobei Sie datenbank durch den richtigen Namen ersetzen müssen.
Beim Kompilieren von Knoda müssen Sie dem Configure-Befehl über den Zusatz --prefix=/pfad/zu/kde zusätzlich mitteilen, wo Ihre Distribution die KDE-Dateien ablegt. Unter Suse Linux lautet der volle Befehl
./configure --prefix=/opt/kde3
Bei den meisten anderen Distributionen führt der Befehl
./configure --prefix=/usr
zum Ziel. Hk_classes benötigt diese Option nicht. Der Kompiliervorgang dauert je nach Rechenpower zwischen 30 und 90 Minuten.
RPM-Pakete: Benutzer von Suse Linux 9.3 finden auf der Heft-CD fertige Pakete für Knoda, Hk_classes und einige Datenbanken, die die 9.3 nicht mitbringt. Da beim Kompilieren von hk_classes sämtliche unterstützten Datenbanken berücksichtigt wurden, benötigen Sie für die fehlerlose Installation ebenfalls sämtliche Datenbank-Pakete. Vier davon finden Sie auf der Heft-CD. Die restlichen Pakete (MySQL, PostgreSQL, Sqlite2/3 und ODBC) müssen Sie von den Suse-Medien nachinstallieren.
Wechseln Sie zur Installation auf der Heft-CD ins Verzeichnis SUSE9.3 und geben Sie folgenden Befehl ein:
rpm -Uvh *
Reklamiert der RPM-Befehl fehlende Abhängigkeiten, dann suchen Sie nach den verlangten Paketen in YaST und installieren diese nach. Für die Mdbtools müssen Sie unbedingt die Version auf der Heft-CD oder eine CVS-Version von [2] benutzen. Die von Suse mitgelieferten Access-Tools sind zu alt. Erscheint Ihnen die Abhängigkeitsliste zu groß und Sie können gut auf Datenbanken wie MS Access, Paradox oder Firebird verzichten, installieren Sie hk_classes und knoda besser aus dem Source Code.

Abbildung 1: Die Ausgabe des Configure-Skripts von ‘hk_classes’ verrät Ihnen, welche Datenbanken Knoda unterstützen wird. Achten Sie auf die Einträge in Großbuchstaben wie FIREBIRD, MDBTOOLS und MYSQL.
Die Beispieldatenbank
Ist die Installation geglückt, starten Sie Knoda über [Alt+F2] und die Eingabe von knoda. Um die Übersichtlichkeit des Programms zu verbessern, hat der Knoda-Programmierer Horst Knorr in der neuen Version einen zusätzlichen Treiberauswahldialog eingebaut (Abbildung 2). Hier wählen Sie den gewünschten Datenbanktyp aus und klicken auf Verbinden. Da Datenbankserver für die Verbindung oft zahlreiche Angaben benötigen, lassen sich die Zugangsdaten auch in einer Datei speichern. Sie finden diese dann über den Reiter Verbindungen.

Abbildung 2: Vor dem Start von Knoda wählen Sie einen Datenbanktreiber aus. Bereits benutzte Datenbanken erreichen Sie über den Reiter ‘Verbindungen’.
Unabhängig davon, welchen Treiber Sie zu Beginn wählen, können Sie innerhalb von Knoda auch zu einer anderen Datenbank wechseln. Der Einstiegsdialog wirkt deshalb etwas irreführend. Um die Beispieldatenbank zu öffnen, klicken Sie doppelt auf den Eintrag sqlite3. Sie sehen jetzt das Hauptfenster von Knoda und können über Datei | Neu eine neue Sqlite3-Datenbank mit Tabellen, Abfragen, Formularen und Berichten anlegen. Details dazu finden Sie in unseren Knoda-Workshops in Ausgabe 01/2005 [3] und 02/2005 [4].
Kopieren Sie jetzt die Beispieldatenbank picture-example.hk_sqlite3 von der Heft-CD in ein beliebiges Verzeichnis und öffnen Sie die Datenbank anschließend über Datei | Öffne lokale Datenbank. Das Kopieren von der CD ist nötig, damit Sie in die Datenbank schreiben können. Knoda zeigt Ihnen jetzt das Formular mit der Überschrift Knoda image example an (Abbildung 3).

Abbildung 3: Formulare machen den Zugang zu Datenbanken auch Anfängern schmackhaft. Die Beschriftung ‘Klick’ und der gelbe Tooltipp helfen dabei.
Vergleichen Sie das Formular mit Abbildung 3, so stellen Sie fest, dass auf dem Originalformular die Beschriftung Klick und der Tooltip fehlen. Um die Knöpfe mit einem Label als solche erkennbar zu machen, wählen Sie Ansicht | Entwurfsmodus und markieren den obersten Button. Im Eigenschaftsfenster ganz rechts tragen Sie nun auf dem Reiter Daten das gewünschte Label ein. Den Buchstaben für den Hotkey – zum Bedienen des Programms ohne Tastatur – setzt Knoda automatisch. Den Kurztipp schreiben Sie in das Feld Hilfstext. Über einen Klick auf das Zahnradsymbol wechselt Knoda wieder in den Anzeigemodus und Sie können die Änderungen testen.
Bilder verknüpfen
Wählen Sie den neuen Klick-Knopf an, erscheint das Formular Init database. Hier geben Sie ein Verzeichnis mit Bildern an und klicken auf Store now. Damit die Übung auch klappt, falls sich in dem Verzeichnis keine Bilder befinden, kopiert Knoda vier eigene Beispielbilder in den angegebenen Ordner. Schließen Sie nun das Formular mit einem Klick auf das Tür-Symbol.
Zurück im Hauptformular wählen Sie den zweiten Button von oben. Knoda zeigt nun das Formular Linked image form an (Abbildung 4). Es dient dazu, den einzelnen Bildern einen Namen und Schlüsselwörter zuzuordnen. Wählen Sie hier den Button rechts von Import Images, um der Datenbank eigene Bilder hinzuzufügen. Wie im vorherigen Dialog müssen Sie das Verzeichnis mit den Bildern angeben. Knoda importiert die Formate GIF, PNG und JPEG – je nachdem, welche Option Sie anwählen. Ein Klick auf Import now startet den Einlesevorgang.

Abbildung 4: So hübsch können Datenbanken sein. Natürlich können Sie auch Ihre eigenen Motive wählen.
Obschon von Import die Rede ist, liest Knoda die Bilder nicht wirklich ein. Das Programm merkt sich lediglich den Speicherort des Fotos und das aktuelle Datum. Der Vorgang dauert denn auch nicht lange. Das KDE-Datenbanktool speichert die Informationen in der Tabelle picturelink. Öffnen Sie die Tabelle mit einem Doppelklick, sehen Sie die Felder set, details, description, filename, picture_id und added. Natürlich könnten Sie die Inhaltsangaben zu den einzelnen Bildern auch hier vornehmen, doch dank Voransicht eignet sich das Formular dazu wesentlich besser.
Möchten Sie eine eigene Datenbank mit verklinkten Bildern anlegen, wählen Sie dazu als Feldtyp Memo und tragen die vollständige URL des Bildes ein, zum Beispiel /home/marcel/bilder/fisch.png. Die Python-Skripte zum Importieren mehrerer Bilder können Sie dazu aus einer der Knoda-Beispieldatenbanken übernehmen. Schauen Sie sich auch das Southstorm-Beispiel mit seinen zahlreichen Skript-Beispielen an.
Bilder direkt einbinden
Alternativ fügen Sie die Bilder direkt in die Datenbank ein. Auf Datenbankservern sollten Sie dies aus Performance-Gründen vermeiden. Möchten Sie jedoch eine portable Sqlite3-Datenbank mit ein paar Fotos versehen, speichert Knoda das Bild auf Wunsch auch direkt in der Datenbank. Die Größe der Datei wächst dann natürlich im Vergleich zum restlichen Inhalt mit jedem Bild unverhältnismäßig. Ein Beispiel für die direkte Einbindung von Bildern zeigt Ihnen Knoda, wenn Sie im Hauptformular den dritten Button drücken. Das Programm öffnet dann das Formular Table based image form.

Abbildung 5: Für portable Datenbanken bietet Knoda auch die Möglichkeit, Bilder direkt in der Datenbank zu speichern, zum Beispiel für eine Model Agentur. Über das Kontextmenü lässt sich das Bild nachträglich skalieren.
Die Daten für dieses Formular speichert die Beispieldatenbank in zwei Tabellen. In der Tabelle picturetable befinden sich die Bilder als Typ binary, eine Bild-ID und ein Autozähler. Im gewählten Beispiel sind die ID und der Zähler identisch. Den Bildtitel und die Notizen hält das Programm in der Tabelle picturedetails fest.
Um eine eigene Datenbank mit Bildern zu erstellen, wählen Sie als Feldtyp Binär. Anschließend klicken Sie im Anzeigemodus mit der rechten Maustaste auf die entsprechende Zelle und wählen Load from file. Knoda zeigt danach erstmal gar nichts an. Sind Sie aber mit der Eingabe der ersten Zeile fertig und betätigen die Eingabetaste, schreibt das Programm Binär in die leere Zelle.
Die Tabelle zeigt Ihnen keine Bilder an. Dazu benötigen Sie ein Formular über Datei | Neu | Formular. Hier fügen Sie über das Mona-Lisa-Icon einen Bilderrahmen ein und richten die Tabelle mit den Bildern als Datenquelle ein. Dazu müssen Sie zuerst eine Datenquelle für das Formular selbst einrichten, dann den Bilderrahmen markieren und anschließend nochmals die Datenquelle (Tabelle) auswählen. Im Dropdown-Feld unter der Datenquelle wählen Sie den richtigen Feldeintrag aus. Der Bilderrahmen lässt sich beliebig skalieren – Knoda richtet das Bild automatisch aus.
Nach einem Wechsel in den Anzeigemodus zeigt Knoda das erste Bild der Datenbank an. Klicken Sie mit der rechten Maustaste auf das Foto, bringt das KDE-Programm ein Kontextmenü hervor (Abbildung 5, über der Hand des Models). Dieses erlaubt Ihnen nicht nur das Hinzufügen neuer Bilder, sondern auch das Vergrößern und Verkleinern der Ansicht.
Access-Tabellen importieren
Umsteiger von Microsofts Datenbanktool unterstützt Knoda mit einer Importfunktion für Access-Datenbanken, die auf den freien Mdbtools basiert. Leider sind die SQL-Abfrageoptionen des Mdbtools-Treibers noch nicht genügend stabil. Horst Knorr entschloss sich deshalb, die in der Test-Version bereits implementierte Query-Funktion für das aktuelle Release wieder auszuschalten. Die Access-Unterstützung beschränkt sich somit zurzeit auf das Betrachten und Importieren von Access-Tabellen. Möchten Sie unter Linux SQL-Abfragen an Access-Datenbanken durchführen, ohne diese zuvor in ein anderes Format zu konvertieren, hilft Ihnen das Programm gmdb2 (siehe Abbildung 6). Es gehört zu den Mdbtools, befindet sich somit ebenfalls auf der Heft-CD. Suse Linux 9.3 bringt zwar ein eigenes Paket mit, Sie sollten aber auch in diesem Fall das aktuellere Paket auf der Heft-CD benutzen.
Gmdb2 zeigt außer den Tabellen auch an, welche Formulare, Berichte, Makros und Module die Datenbank unfasst. Der Zugriff auf die eigentlichen Daten ist jedoch nicht möglich.

Abbildung 6: Das zu den Mdbtools gehörende GUI ‘gmdb2’ erlaubt auch SQL-Abfragen an Access-Datenbanken – leider nicht immer mit der gewünschten Stabilität. Die Abbildung zeigt das offizielle Northwind-Sample von Microsoft Access.
Um eine Access Datenbank in Knoda zu öffnen, wählen Sie im Treiberauswahldialog den Eintrag mdb. Haben Sie das Knodafenster bereits offen, führt Datei | Verbinden mit | mdb zum gleichen Ziel. Anschließend wählen Sie Datei | Öffne lokale Datenbank und navigieren zur gewünschten MDB-Datei. Ein Klick auf das Plus-Zeichen vor dem Eintrag Tabellen zeigt Ihnen die Inhalte der Datenbank an. Über einen Doppelklick öffnen Sie einzelne Tabellen im schreibgeschützen Modus. In Abbildung 7 sehen Sie die Tabelle Products aus der offiziellen Sample-Datenbank Northwind von Microsoft.

Abbildung 7: Knoda öffnet Access-Datenbanken vorerst nur im schreibgeschützten Modus. Um eine SQL-Abfrage zu starten, müssen Sie die Tabellen allerdings erst exportieren.
Wählen Sie nun für die Konvertierung in Sqlite3 Datei | Export | Nach Datenbank | sqlite3. Der Vorgang funktioniert aber auch mit anderen Datenbanken, wie Abbildung 8 zeigt. Im Exportdialog suchen Sie sich in der rechten Fensterhälfte entweder eine bestehende Datenbank aus, oder erstellen über einen Klick auf das Symbol mit den drei Punkten eine neue Datenbank. Anschließend startet ein Klick auf das Doppelpfeilsymbol zwischen den zwei Spalten den Exportvorgang. Die Nachfrage Alle Tabellen kopieren beantworten Sie in der Regel mit Ja. Alternativ wählen Sie vor dem Exportvorgang einzelne Tabellen aus.
Je nach Datenbanktyp und Umfang der Tabellen dauert der Export einige Sekunden. In den Tests zeigte Knoda dabei je nach Umfang der Datenbank eine Fortschrittsanzeige an. Über Beenden verlassen Sie den Exportdialog wieder. Fragen Sie sich nun nach dem Verbleib Ihrer neuen Datenbank, wählen Sie Datei | Verbinden mit | sqlite3 (respektive den für den Export gewählten Datenbanktypen ). Sie finden nun die ehemaligen Access-Tabellen unter den Sqlite3-Datenbanken. Alternativ wechseln Sie ins Verzeichnis .hk_classes/sqlite3/localhost/ in Ihrem Home-Verzeichnis. Knoda speichert hier sämtliche lokalen Datenbanken. Analog zum Export funktioniert auch der Weg über den Import. Dazu öffnen Sie zuerst die Datenbank, in die Sie die Access-Tabellen aufnehmen möchten, und wählen dann Datei | Import | Von Datenbank | mdb.

Abbildung 8: Eben noch in MS Access – jetzt bereits auf dem MySQL-Server! Die Import/Export-Funktionen von Knoda machen den Abschied von Access wesentlich leichter.
Keine Probleme mit Sonderzeichen
Nach dem Import können Sie nun Abfragen, Formulare und Berichte anlegen. Stellen Sie beim Import/Export Probleme mit Sonderzeichen fest, hat Knoda die Zeichenkodierung Ihres Systems nicht richtig erkannt. Wählen Sie in diesem Fall Einstellungen | Optionen und wechseln Sie auf den Reiter Regionales. Hier tragen Sie für Suse Linux unter Locale den Wert de_DE.UTF-8 ein. Mit welchen Einstellungen Ihre Distribution arbeitet, verrät Ihnen die Ausgabe des Befehls
locale
Im Einstellungsdialog legen Sie auch die Standardschriftgröße und den Standarddatenbanktreiber von Knoda ein.
Arbeiten mit Verbindungen
Benutzen Sie mehrere Datenbankserver über verschiedene Accounts, lohnt es sich, den Zugriff darauf über so genannte Verbindungen zu speichern. Knoda merkt sich darin sämtliche Zugangsdaten außer dem Passwort. Dazu legt das Programm eine XML-Datei mit der Dateiendung .hkc an. Diese Dateien sind mit Knoda verknüpft: Sie können also zum Beispiel über einen einzigen Mausklick in Konqueror eine MySQL-Datenbank öffnen. Letzteres funktioniert auch bei Sqlite3-Datenbanken – sogar ohne Verbindungen.
Um eine neue Verbindung anzulegen, stellen Sie beim Start von Knoda wie gewohnt über den Treiberauswahldialog den Kontakt mit dem Datenbankserver her. Anschließend klicken Sie auf Datei | Speichere Verbindung. Den Dateinamen können Sie frei wählen. Knoda hängt daran automatisch die Endung .hkc an. Beim nächsten Start von Knoda klicken Sie nun auf den Reiter Verbindungen und wählen die HKC-Datei aus. Nach Angabe des Passwortes (falls nötig) zeigt Ihnen Knoda die Datenbank an.
Schutz vor Missbrauch
Im professionellen Umfeld wünschen sich viele Administratoren ein Datenbank-Frontend, das zwar den Zugriff auf Tabellen und Formulare zulässt, aber lediglich das Ändern und Hinzufügen von neuen Datensätzen erlaubt. Um diesen Anforderungen gerecht zu werden, bringt Knoda in dieser Version gleich zwei Binaries mit. Das Programm knoda liefert den vollen Funktionsumfang. Das Runtime-Environment, das lediglich bestimmte Tätigkeiten erlaubt, starten Sie über den Befehl knoda-rt.
Bei den meisten Datenbanken beschränkt sich die Arbeit des Benutzers auf das Ausfüllen von Formularen und das Drucken von Berichten. Die Runtime-Version von Knoda erlaubt deshalb nur das Bearbeiten von Formularen. Um Berichte oder vordefinierte Abfragen zu erstellen, müssen diese über das Formular gestartet werden. Eine besondere Stellung nimmt dabei das Formular mit dem Namen Autoform ein. Ist kein anderes Formular explizit definiert, öffnet Knoda automatisch dieses Formular.
Da die Runtime-Version das beliebige Öffnen von Datenbanken nicht erlaubt, müssen Sie dem Programm auf der Kommandozeile die exakten Parameter mitteilen. Die nötige Syntax lautet knoda-rt -d Datenbanktreiber -b Datenbank -f Formular. Heißt das Formular Autoform, fällt der letzte Parameter weg, zum Beispiel:
knoda-rt -d sqlite3 -b kundendb
Die Runtime-Version von Knoda erlaubt allerdings über Verbindungen auch das Öffnen von ganzen Datenbanken. Als Systemadministrator sollten Sie deshalb vorsichtig sein, wo Sie Ihre Verbindungen speichern.
Haben Sie erst mal Erfahrungen mit dem neuen Knoda gesammelt, werden Sie viel Freude am KDE-Programm haben. Ist Ihnen dabei eine besondere Datenbank oder ein spezielles Formular geglückt, senden Sie es doch im Sqlite3-Format an die Redaktion des LinuxUsers. Die besten Vorschläge packen wir auf die Heft-CD, und Sie bekommen ein Geschenk von uns.
Infos
[1] Knoda-Homepage: http://www.knoda.org
[2] Mdbtools: http://mdbtools.sourceforge.net/
[3] Marcel Hilzinger, “Bankgeheimnis”, LinuxUser 01/2005, S. 70.
[4] Marcel Hilzinger, “Schön sortiert”, LinuxUser 02/2005, S. 75.


