Posts Tagged ‘ODBC’

Störrische Datenbanksysteme

Samstag, März 17th, 2012

Eigentlich wollte ich heute hier berichten, das das BVASystem 2.1.0.39-dev nun 3 verschiedene Datenbankmanagementsysteme unterstützt. Leider gab es in den letzten Tagen eine Reihe von Problemen, so das es aktuell nur 2 Datenbanksysteme (MySQL und Firebird) sind. In der nächsten Version werde ich Oracle als drittes Datenbanksystem nachreichen.

Probleme mit Firebird

Schon zu Beginn der Arbeiten zur neuen Version des BVASystems gab es die ersten Probleme. Firebird nutzt ein komplett anderes System um eine Datenbankverbindung aufzubauen als MySQL oder Oracle. Firebird benötigt den Pfad und Dateinamen der Datenbankdatei, um eine Verbindung herzustellen. Da ich Pfad und Dateiname im Administrationstool nicht erfasst habe, war es mir nicht möglich, für alle 3 Datenbanksysteme den gleichen Einstellungsdialog zu verwenden. Also musste ich in den sauren Apfel beißen und einen weiteren Einstellungsdialog entwickeln.

Das zweite Problem war, das auch später im BVASystem immer wieder der Pfad und der Dateiname der Datenbank benötigt wird. Da ich dies absolut nicht wollte, habe ich recht lange nach einer Lösung gesucht und auch eine gefunden. Die Lösung heißt: „aliases.conf“ Im Programmverzeichnis von Firebird liegt eine aliases.conf, in der ein Alias für eine Kombination aus Pfad und Dateiname angelegt werden kann. Das BVASystem Administrationstool legt den benötigten Alias, bei der Erstellung der Datenbankstruktur, mit an. Die einzige Aufgabe, die manuell ausgeführt werden muss, ist ein Neustart des Datenbankservers. Ohne Neustart steht der neue Alias noch nicht zur Verfügung und die Datenbankverbindung schlägt fehl.

Probleme mit Oracle

Auch Oracle erwies sich als nicht weniger störrisch. Die notwendigen Datenbankscripte waren relativ schnell entwickelt, aber bei der von mit genutzten Version 9 lassen sich absolut keine Trigger erzeugen. Per SQLPlus funktionieren die einzelnen Befehle der Scripte wunderbar, aber beim Administrationstool werden vom ODBC-Treiber die Zeilenwechsel durch einen doppelten Wagenrücklauf (#13) ersetzt. Oracle schimpft dann bei der Übersetzung der Trigger, das ein ungültiges Zeichen gefunden wurde. Tests mit der Version 10 funktionierten dagegen einwandfrei. Daher habe ich mich entschlossen, die Unterstützung von Oracle 9 wieder zu entfernen bzw. sie durch Version 11 zu ersetzten. Da ich dafür allerdings mindestens 1 Woche benötige, habe ich entschieden, Oracle auf die nächste Programmversion zu verschieben. Ich hoffe, das dies dann das letzte Problem war, auf dem Weg zur Unterstützung von 3 Datenbanksystemen.

Ausblick

Neben der Oracle Unterstützung habe ich vor, noch einen Programmfehler aus dem BVASystem zu entfernen. Zum Beispiel stürzt das Programm leider ab, wenn ein Bild mit fehlerhaften Exif-Header geladen wird. Außerdem habe ich vor, die Installationsanleitung anzupassen, da nun die Erstellung der Datenbank mit dem Administrationstool einfacher geworden ist.

 

Interne Änderungen

Donnerstag, Februar 2nd, 2012

Der aktuelle Versionssprung stand ganz im Zeichen der internen Änderungen. Notwendig wurden sie zum einen durch den Wechsel auf die ODBC-Technologie und zum zweiten durch das neu entstandene Administrationstool.

Welche Änderungen wurden vorgenommen?

Die erste größere interne Änderung betrifft die Herstellung einer Datenbankverbindung. Bisher war es so, das Servername, Datenbank, Nutzer und Passwort einzelnd benötigt wurden, um eine Datenbankverbindung herzustellen. Das ODBC-Konzept arbeitet dagegen mit sogenannten ODBC-Connectionstrings. Das sind Zeichenketten, die in irgendeiner Form die 4 oben genannten Parameter enthalten. Dummerweise hat der ODBC-Connectionstring für jedes Datenbanksystem einen anderen Aufbau. Daher habe ich nun eine „odbc.ini“ angelegt, welche eine Sammlung von Verbindungsstrings enthält. Je nach eingestellter Datenbank wird einer ausgewählt und zum Herstellen der Datenbankverbindung genutzt. Der Vorteil daran ist, das wenn sich der Aufbau eines ODBC-Connectionstrings ändert, so brauch ich am Programm nichts ändern. Es reicht aus, wenn die „odbc.ini“ angepasst wird.

Damit ich es beim Administrationstool leichter habe, habe ich die Handhabung der Einstellungsdateien komplett überarbeitet. Äußerlich hat sich an den Einstellungsdateien nichts geändert. Der Aufbau ist nach wie vor so, wie in der Installationsanleitung beschrieben. Aber gibt nun intern eine strikte Trennung zwischen allgemeinen Einstellungen, Einstellungen für das BVASystem und Einstellungen für das Administrationstool. Allgemeine Einstellungen sind zum Beispiel die Einstellungen für die gewählte Sprachdatei. Da ich sie für beide Programme benötige, habe ich den Vorteil das ich das Eintellungsobjekt doppelt verwenden kann. Außerdem erreiche ich durch die Trennung, das nur die Einstellungen gelesen bzw. geschrieben  werden, die wirklich benötigt werden.

Weitere Neuerungen

Alle weiteren Änderungen beziehen sich auf das noch relativ junge Administrationstool. Neu hinzugekommen ist dort die Auswahl des  Datenbanksystems, mit dem das BVASystem arbeiten soll. Bisher kann dort allerdings nur „Keine Datenbank“ und „MySQL“ ausgewählt werden. Weitere Datenbanksysteme werde ich nachtragen, sobald die notwendige Datenbankstruktur ebenfalls mit dem Administrationstool erstellt werden kann. Außerdem ist neu, das die im Adminstrationstool durchgeführten Aktionen und Aktionsergebnisse in einem Log erfasst werden.

Administrationstool: Datenbanksystem festlegen

Administrationstool: Datenbanksystem festlegen

Ausblick

In der nächsten Version ist zu erwarten, das das Popupfenster zur Anzeige von EXIF-Daten vorrangetrieben wird. Außerdem habe ich mir vorgenommen, im Administrationstool den Einstellungsdialog zur Erstellung einer BVASystem Datenbank zu gestalten. Die Funktionalität dahinter wird dann in den darauffolgenden Versionen erstellt. Eine ausführlichere Roadmap könnt ihr euch im Bugtracker anschauen.

Große Veränderungen

Donnerstag, Januar 12th, 2012

Heute habe ich die erste neue Softwareversion des Jahres und auch gleichzeitig die erste Softwareversion, die mit dem RAD Studio XE2 erstellt wurde, fertiggestellt. Eines vorweg: Die Änderungen fallen diesmal größer aus, als ich gedacht habe.

Neue Optik

Auch wenn ich mit der neuen Optik des BVASystems so meine Anfangsschwierigkeiten hatte, so bin ich mit dem Ergebnis doch recht zufrieden. Die Anwendung sieht nun komplett anders aus, wirkt aber trotzdem irgendwie vertraut. Mein gewünschtes zweifarbiges Farbkonzept konnte ich besser umsetzen, als in der alten Entwicklungsumgebung. Insgesamt finde ich, sieht die Anwendung jetzt deutlich harmonischer aus.

Hauptdialog der Entwickler-Version 2.1.0.34-dev

Hauptdialog der Entwickler-Version 2.1.0.34-dev

Neuer Datenbankzugriff

Eine große nicht sichtbare Änderung betrifft den Datenbankzugriff. Mit dem Umstieg aufs neue Delphi stellte sich heraus, das der bisher benutze Datenbankzugriff nicht mehr praktikabel war. Denn durch die neuen Unicode Zeichenketten war es nicht mehr möglich, Umlaute in der Datenbank zu benutzen.

Daher habe ich mich entschieden, den Datenbankzugriff auf die ADO Technologie umzustellen. ADO ist eine  Datenbankzugriffstechnologie von Microsoft, bei der über ODBC die Verbindung zur Datenbank hergestellt wird. Der Vorteil daran ist, das man ohne großen Programmieraufwand zu unterschiedlichsten Datenbanksytemen eine Verbindung aufbauen kann. Um unterschiedliche Datenbanksysteme nutzen zu können muss nur der entsprechende ODBC-Treiber installiert werden.

Erste Tests zeigten, das Umlaute bei Fotoalben zum Beispiel wieder funktionieren. Ob der komplette Unicode-Zeichensatz benutzbar ist, muss allerdings noch getestet werden.

Installation des MySQL ODBC-Treibers

Damit die Datenbankverbindung per ADO/ODBC herstellt werden kann, benötigt ihr den MySQL ODBC Treiber in der Version 5.1. Nachdem das Setup ausgeführt wurde, sollte sich die Datebankverbindung wie gewohnt herstellen lassen. Weitere Einstellungen sind nicht erforderlich. Solltet ihr ein 64-Bit Betriebssystem haben, ist es ratsam sowohl die 32-Bit als auch die 64-Bit Variante des ODBC Treibers zu installieren. Da das BVASystem eine 32-Bit Anwendung ist, benötigt es natürlich auch den 32-Bit ODBC Treiber. Wenn ihr in den Systemeinstellungen die ODBC Konfiguration testen wollt, benötigt ihr auf einem 64-Bit System den 64-Bit ODBC Treiber.

Ausblick

Getrieben von den neuen Möglichkeiten möchte ich mich nun darauf konzentrieren, das schon lang vor mir hergeschobene Administrationstool für das BVASystem zu entwickeln. Außerdem benötige ich es jetzt eh bald, da ich die vorhandene Datenbankstruktur nicht mehr über den Haufen werfen kann und will. Langfristig möchte ich mit dem Administrationstool 3 Dinge erreichen:

  • Änderungen/Updates an der Datenbankstruktur sollen ohne großes Fachwissen durchführbar sein
  • Das Anlegen der BVASystem Datenbank soll generell einfacher werden
  • Schaffung einer Backup/Restore-Funktionalität, damit die gespeicherten Daten sicher sind

Ein Nebenprodukt des Admintools und der Umstellung auf ADO/ODBC wird sein, das ihr die Auswahl habt, auf welchem Datenbanksystem ihr das BVASystem betreiben wollt. Wenn beispielsweise bereits ein Firebird-Datenbankserver betrieben wird, wäre es sinnlos noch zusätzlich einen MySQL-Server zu installieren, da beide Server gewartet werden müssen. Sinnvoller wäre es, das BVASystem dann einfach auf Firebird aufzusetzen.

Damit das ganze in der Zwischenzeit nicht zu langweilig wird, werde ich in der Filmstreifen und Miniaturbildansicht das Informationsfenster implementieren. In diesem sollen die erfassten EXIF-Daten eines Bildes dargestellt werden.