In diesem Teil meiner Serie werden die grundsätzlichen Möglichkeiten beschrieben, mit denen Sie von Delphi auf Datenbanken zugreifen können. Zusammengefasst können Sie prinzipiell auf fast jede Datenbank zugreifen und Sie können Delphi zusätzlich um weitere freie oder kommerzielle Datenbanken erweitern, genauer gesagt, um die dafür benötigten Zugriffskomponenten.
Aber beim Wechsel auf Delphi fragt sich der VFP Anwender natürlich zuerst: was wird aus meinen Visual Foxpro DBF/DBC – Daten?
Ganz konkret: Delphi selbst kann mit VFP 9 Dateien so ohne weiteres nichts mit anfangen, über die alte BDE, die aber schon seit Jahren nicht mehr weiterentwickelt wird, könnte man höchstens auf dBase IV – Tabellen zugreifen, ein VFP oder gar ein VFP9 wird aber nicht unterstützt.
So, was nun ?
Nun, eine Möglichkeit die „alten“ VFP – Daten weiterzuwenden wäre Advantage Database Server, dieser würde es Ihnen ermöglichen von Delphi aus auf Ihre VFP9-Tabellen zuzugreifen. Eventuell könnten sich Probleme bei Indexausdrücken ergeben (zumindest gelegentlich bei der 9er Version, aber eventuell behoben in neueren Versionen).
Die Zugriffskomponenten erhalten Sie sogar kostenlos, auch gibt es kostenlose Entwicklerlizenzen. Über die Local Database Engine können max. 5 verschiedene Anwender auf die Daten zugreifen, bei mehr benötigen Sie den richtigen Server. Hierbei ist zu beachten, dass bei einer Distribution nutzerabhängige Lizenzkosten anfallen – für den Endanwender, der den Server dann installieren muss.
Eine 2. Möglichkeit auf Ihre VFP – Daten zuzugreifen bietet die Komponente TDBF. Persönlich würde ich nicht empfehlen diese Komponente zur Entwicklung eines komplexeren Programms zu verwenden, aber für lesende Zugriffe – also zum Import – problemlos zu verwenden.
Leider gibt es aber keine Delphi 2009 Version, aber ein freundlicher Delphianer aus dem Forum Delphi-Praxis.de hat hier eine Anpassung vorgenommen, so dass zumindest die lesenden Zugriffe gehen und für wesentlich mehr benötigen Sie es auch nicht.
Aber warum überhaupt VFP-Tabellen weiterverwenden? Wesentliche Merkmale bietet es nun nicht, die Sie nicht auch woanders finden würden, im Gegenteil, es birgt einige Nachteile:
- als dateibasiertes System beinhaltet es die üblichen Risiken (korrupte Tabellen / Memodateien…)
- es bietet keine Verschlüsselung
- keine Komprimierung
Warum also nicht gleich auf etwas moderneres wechseln, wenn Sie ohnehin Ihre Applikation neu entwickeln und die alten VFP-Daten z.B. mit TDBF einfach nur importieren?
Delphi selbst bietet bereits einiges, z.B.
dbGo: dbGo ist ein Objektmodell über den Daten aus einer Vielzahl von Datenquellen über OLE-DB Schnittstellen angerufen werden können. Meist wird dbGo eingesetzt, um Abfragen für Tabellen einer relationalen Datenbank zu stellen, die Ergebnisse abzurufen und in einer Anwendung anzuzeigen und Benutzern die Möglichkeit zu geben, Änderungen an den Daten vorzunehmen und zu speichern.
BDE: sollte man nicht mehr verwenden, da seit Jahren nicht mehr weiterentwickelt. Prinzipiell bietet es über die Borland Database Engine den Zugriff auf dbase/Paradox – Tabellen.
dbExpress: dbExpress setzt sich aus mehreren Datenbankkomponenten zusammen, die schnellen Zugriff auf verschiedene SQL-Datenbankserver bieten. dbExpress stellt für jede unterstützte Datenbank ein Treiber-Framework zur Verfügung, der die serverspezifische Software an eine Menge einheitlicher dbExpress-Interfaces anpasst.
Dazu kommen noch Komponenten für Interbase, dem SQL-Server von Codegear.
Sie haben aber auch die Möglichkeit sich Ihre eigene Datenbank zu suchen und je nach Datenbank wieder die für Sie geeigneten Zugriffskomponten.
Prinzipiell in Fragen kommen hier z.B. Firebird, PostresSQL, SQLite – diese Datenbanken sind in der Regel kostenlos, zudem finden Sie auch oft kostenlose Zugriffskomponenten für diese Server, z.B. die Zeos-Komponenten für Firebird. Es ist aber durchaus unter Umständen ratsam sich kommerzielle Komponenten zuzulegen – eine bessere Dokumentation, Weiterentwicklung und Zuverlässigkeit sollten zumindest bei einem kommerziellen Projekt im Vordergrund stehen.
Die genannten SQL-Serverdatenbanken bedeuten für Sie, dass Sie neben Delphi einen DB-Server benötigen sowie Zugriffskomponenten, was 3 verschiedene Quellen für Ihr Datenbankprojekt bedeutet. Insbesondere für VFP-Anwender, dies es gewohnt sind, alles aus einem Guß zu haben, ungewohnt.
Daher immer eine Prüfung wert, sind Komplettlösungen : also Datenbanklösungen, die Ihnen die benötigten Komponenten und den Server plus vielleicht Verwaltungstools idealerweise in einem Paket zur Verfügung stellen.
Hier fallen mir sofort folgende Systeme ein:
Accuracer (www.accuracer.com) – ein Datenbanksystem, welches über Singleusermodus über Fileserver sich bis hin zu einem C/S-System hochskalieren lässt. Zudem erlaubt es auch einen tabellenorientierten Zugriff auf Ihre Datenbanken, ähnlich wie dem unter VFP. Nicht getestet von mir.
Absolute Database (www.componentace.com)- technisch vergleichbar mit VFP erlaubt es einen Multiuser – Zugriff, stellt aber keine Serverkomponente bereit, d.h. bei vielen Anwendern haben Sie das gleiche Risiko wie unter VFP. Das System als solches ist aber gut dokumentiert, sehr schnell und leicht erlern- und einsetzbar. Sehr gut mit der Einschränkung, dass es keinen DB-Server gibt.
Elevate DB : bietet tabellen- und SQL-orientierten Zugriff und beinhaltet einen DB-Server. Viele positive Kritiken, aber von mir selber nicht getestet.
Mein Favorit- und meine Empfehlung: NexusDB.
NexusDB beinhaltet alles, was Sie für eine Datenbankentwicklung brauchen : Zugriffskomponenten, umfangreiche Dokumentation (1500 Seiten Handbuch! plus weiteres Material), Server und verschiedene Verwaltungstools, ausserdem bietet es Verschlüsselung, Komprimierung, Remote-Admin und vieles mehr. Es erlaubt sowohl einen tabellenorientierten Zugriff als auch einen SQL-orientierten. Preislich sehr fair.
Eine sehr gute Wahl, wenn Sie keinen handelsüblichen SQL-Server der großen Art benötigen, aber auf mehr Sicherheit einer serverbasierten Lösung nicht verzichten möchten. Hinzufügen sei, dass es auch eine Embedded-Variante gibt bzw. möglich ist den Server ins Programm selbst einzubinden, also eine Lösung für Einzelplatz oder Testversionen.
Sie haben damit einen guten Überblick über verschiedene Wege mit Datenbanken unter Delphi zu arbeiten. Eigentlich eher die Qual der Wahl, weil prinzipiell praktisch auf alles, was Daten beinhalten könnte zugegriffen werden kann.
Das schöne dabei ist: egal, was Sie verwenden – abgesehen von datenbankspezifischen Besonderheiten – ist die Vorgehensweise, wie Sie mit den Daten arbeiten, auf die Daten zugreifen, bei allen Systemen immer sehr ähnlich, so dass oft auch ein Wechsel auf eine andere Datenbank zu einem späteren Zeitpunkt relativ leicht möglich ist.
Ein weiterer Vorteil ist, dass bei vielen Datenbanken alles was benötigt wird, direkt ins Programm kompiliert wird, die Installation einer gesonderten Runtime wie unter VFP also entfällt. Dies gilt natürlich nicht allgemein, je nach DB kann es vorkommen, dass mitunter z.B. DLL-Dateien, installiert werden müssen. Bei den serverbasierten Systemen ist natürlich der Server als solches noch zu installieren.
Da Sie unter Delphi ohnehin keine Runtimes installieren müssen, gebenenfalls vielleicht mal von Ihnen verwendete COM oder OCX-Objekte vereinfacht sich insgesamt auch die spätere Distribution erheblich.
Im nächsten Teil wird dann der tatsächliche Zugriff auf Datenbanken besprochen: d.h. wie binden Sie die Datenbank in Ihr Delphi – Programm ein, sie sprechen Sie Daten an, was sind Query, DataSource und TTable-Komponenten ?
Im nächsten Teil wird es also richtig spannend :)