Home Navigationspfeil Firebird unter Lazarus Navigationspfeil Firebird Embedded

Firbebird Embedded

Firebird eingebettet - keine Datenbankinstallation notwendig!

Firebird bietet eine sehr einfache Möglichkeit, die Datenbank für kleinere Anwendungen weiterzugeben, ohne diese installieren zu müssen. Es ist lediglich notwendig, einige Dateien in das Verzeichnis der Applikation zu kopieren.

Bis zur Version 2.5 wurde eine eigene Version der embedded Version ausgeliefert. Ab der Version 3.0 hat sich das geändert. Es sind einer embedded Installation einige Dateien von Firebird mitzugeben. Diese können sich direkt im Verzeichnis der Lazarus Applikation befinden, aber auch in einem Unterverzeichnis der Applikation (des Programmes) befinden. Bei der Entwicklung ist dies auf jeden Fall besser, da man so leicht zwischen Firebird 3 und Firebird 4 wechseln kann. Zu beachten ist allerdings, dass die Datenbankdateien zwischen den Versionen 3 und 4 nicht kompatibel sind. Am besten 2 Datenbankdateien mit unterschiedlicher Bezeichnung anlegen, zum Beispiel Adressen_fb3.fdb und Adressen_fb4.fdb. Die Zeos 7.3 Komponenten laufen auf jeden Fall mit beiden Versionen, soweit ich das gesehen habe, tadellos. Die Verbindung wird genauso wie der "großen" Datenbank über den Pfad zur fbclient.dll hergestellt.

Mein zweites Tutorial wird man wahlweise mit Firebird Embedded 3 und Firebird Embedded 4 herunterladen können. So kann man es durcharbeiten ohne ein Datenbank installieren zu müssen. Aber es wird auch möglich sein das Tutorial ohne Datenbankdateien herunterzuladen.

Hier vorerst eine gute, wenn auch schon etwas in die Jahre gekommene Beschreibung der Möglichkeiten von Firebird Embedded im Delphi-Treff:
Zeos Library - Einsatz mit Delphi und embedded Server von Firebird
(deutsch) ursprünglich von Michael Seeger

Es ist gar nicht so einfach eine (deutsche) Information zu finden welche Dateien mitgegeben werden sollen. Untenstehend die Auflistung für Firebird 3 und Firebird 4. Möglicherweise sind noch Librarys von Microsoft zu installieren, ich habe alle installiert. Ich würde mich über eine Rückmeldung diesbezüglich freuen.

Auf der Seite firebirdsql.org kann man sich eine englischsprachige PDF herunterladen, wo die Arbeit mit Firebird 3 Embedded umfangreich erklärt wird:
https://www.firebirdsql.org/en/news/embedded-server-in-firebird-3/

Wer eine Datenbanksicherung direkt in sein Programm einbauen will, muss auch die EXE "gbak.exe"  in das Embedded Verzeichnis kopieren. Im Tutorial "Firebird Datensicherung mit gbak.exe" befindet sich eine Unit, mit der die Sicherung (für Windows) aus einem Programm heraus komfortabel erledigt werden kann.

Ein "kleiner Trick" ermöglicht übrigens während der Entwicklung TZConnect aktiv zu lassen, wenn man Lazarus startet. Zeos bildet die BDE Komponenten in großem Umfang nach und so hat man im Editiermodus oft TZConnection.Connected auf True gesetzt. Wenn man jetzt vergisst vor dem Starten des Compilers und Linkers Connected auf False zu setzen, muss man dann Lazarus wieder stoppen um das zu erledigen. Da man beim Entwickeln nur mit einer Testdatenbank arbeitet sollte der Doppelzugriff kein Problem sein. Ich habe jedenfalls noch keine Probleme mit diesem Trick gehabt. Funktioniert bei Firebird 3 und Firebird 4 embedded.

Einfach die Datei firebird.conf in einen Editor laden und am Schluss folgendes anfügen:

          ServerMode = SuperClassic
          SharedCache = true
          SharedDatabase = true

speichern und kein ständiges Connected true/false mehr während der Entwicklung!

Wer noch mit Firebird 2.5 oder älter arbeitet, für den kann das untenstehende möglicherweise nützlich sein.

Bis zur Version 2.1.x konnte man auf diese Art nur ein einzelner Anwender bzw. ein einzelnes Programm zugreifen. Das heißt, wenn Sie in der Designphase eine Datenbank offen haben, können Sie nicht, während Lazarus läuft auf das von Ihnen entwickelte Programm zugreifen. Sie müssen in diesem Fall die Verbindung zur Datenbank schließen (connected:= false), dann können Sie das Programm unter Lazarus zum Debuggen starten. Ab der Version 2.5 ist eine Mehrbenutzerfähigkeit gegeben. Dies ist vor allem dann von Vorteil, wenn man auf seine Daten mit mehreren Programmen parallel zugreifen möchte oder, wie oben besprochen die Datenbank im Design- und im Laufmodus unter Lazarus offen haben möchte.

Ich habe derzeit keine große Erfahrung mit der Embedded Version. Die Version 2.1 und ZEOS 6.6.6 arbeiten jedenfalls zusammen. ZEOS 6.6.6 und Embedded Version 2.5 funktioniert derzeit (20.03.2010) noch nicht.

Für den Mehrbenutzerbetrieb ist in der Regel eine Installation der Datenbank vorzuziehen.

Hier vorerst eine gute, wenn auch schon etwas in die Jahre gekommene Beschreibung der Möglichkeiten von Firebird Embedded im Delphi-Treff:
Zeos Library - Einsatz mit Delphi und embedded Server von Firebird
(deutsch) ursprünglich von Michael Seeger

D
as dort Angeführte gilt prinzipiell auch für die Firebird Versionen 2.1 und 2.5. Nur einzelne Dateinamen haben sich geändert.

Es gibt eine umfangreiche englische PDF-Datei von IBPhoenix für den Einsatz des Embedded Server. Diese hat als Grundlage zwar Interbase 6, doch dürfte fast alles in dieser Beschreibung auch für Firebird von Belang sein.

WICHTIG! Es kann passieren, dass, wenn Sie alles so gemacht haben, wie es dort angegeben wird, dass die Installation trotzdem nicht funktioniert. Es werden Runtime-Librarys  von Microsoft Visual C++ benötigt. Normalerweise werden die mit Windows mitinstalliert, fehlen jedoch manches mal.

Um diese zu installieren, laden Sie die Firebird-2.x.x.x-0_Win32_pdb.zip herunter. In dieser ZIP-Datei befindet sich ein Verzeichnis "system32". Starten Sie den vccrt8_Win32.msi. Dieser Installer installiert die entsprechenden Dateien. Firebird embedded sollte nun anstandslos laufen.

Ein weiteres Problem kann auch sein, dass zwar das Programm läuft, aber zum Debuggen unter Lazarus nicht aufgerufen werden kann. Die einfachste Lösung ist hier, die für die embedded Version benötigten Dateien außer in das Verzeichnis des zu entwickelndes Programmes auch in das Lazarus und/oder (ist nicht immer gleich, wer weiß warum) in das Windows Systemverzeichnis zu kopieren.

 <>

 

© CMBasic.de