Difference between revisions of "Databases/de"

From Free Pascal wiki
Jump to navigationJump to search
 
(84 intermediate revisions by 19 users not shown)
Line 1: Line 1:
Arbeit ist im Gange..
+
{{Databases}}
=Einführung=
 
  
This page is about creating databases applications with Lazarus using the DB-unit. In the DB unit all the basic functionality for working with databases is implemented, but to be usefull they need components which are dependent on the database you want to use.
+
Diese Seite ist noch unfertig ...
  
The first part gives a short introduction on the several database-dependent components and how to install them, the second part is a short course in working with the DB-unit and the last part gives specific information about several supported databases.
+
{{Database Programming/de}}
  
=Erster Teil: Allgemeine Informationen über unterstützte Datenbanken=
+
== Einleitung ==
  
==Einleitung==
+
Wie bei anderen Entwicklungssystemen auch spielt die Zusammenarbeit mit verschiedenen Datenbanken bei Lazarus eine bedeutende Rolle. Während ein Teil der Funktionalität schon mit FPC zur Verfügung steht, kommen andere Teile (insbesondere die visuellen Komponenten) erst mit Lazarus selbst hinzu. Die bei Lazarus enthaltenen Komponenten decken schon ein gewisses Spektrum an Datenbanken ab. Da aber immer Verbesserungsbedarf besteht und es auch exotischere Datenbanken gibt, existieren externe Komponenten / Bibliotheken, die die Möglichkeiten von Lazarus erweitern.
  
The databases you can use with Lazarus, (actually with FPC, but that's not so important for the rest of the story) can be divided into two categories: The databases which are completely 'internal' and are written in Freepascal, and the 'external' databases to which connections are made with client-libraries. To use these client-libraries the appropiate bindings must be available. Most client-libraries come only with bindings for C, but FPC provides several packages with the pascal-bindings for database-clients. The supported databases are listed in table 1. (fpc 1.9.7 and above)
+
Diese Seite stellt einen Einstieg für das Thema 'Lazarus und Datenbanken' dar. Die folgende Tabelle bietet einen Überblick über die unterstützten Datenbanken. Da sie noch auf dem Stand von FPC 1.9.7 basiert, sollte sie schnellstens auf den aktuellen Stand gebracht werden. Ein Hinweis noch an alle Experimentierfreudigen: Installieren sie nur die Datenbank-Komponenten, deren Client-Bibliotheken (falls diese erforderlich sind) auf ihrem Computer installiert sind. Sonst kann es passieren, dass Lazarus den Start mit einer Fehlermeldung (wegen fehlender Dateien) verweigert. Da sie somit keine Möglichkeit mehr haben, die Komponenten zu deinstallieren, ist eine Neuinstallation von Lazarus erforderlich.
  
===Tabelle 1===
+
=== Tabelle 1 ===
{| BORDER="1" CELLSPACING="0"
+
{| class="wikitable sortable" BORDER="1" CELLSPACING="0"
 
!STYLE="background:#ffdead;"|'''Datenbank'''
 
!STYLE="background:#ffdead;"|'''Datenbank'''
!STYLE="background:#ffdead;"|'''Package name'''
+
!STYLE="background:#ffdead;"|'''Package Name'''
!STYLE="background:#ffdead;"|'''Need Client Lib?'''
+
!STYLE="background:#ffdead;"|'''Benötigt eine <br>Client Bibliothek?'''
 +
!STYLE="background:#ffdead;"|'''Benötigt Server?'''
 
!STYLE="background:#ffdead;"|'''Unterstützte Versionen'''
 
!STYLE="background:#ffdead;"|'''Unterstützte Versionen'''
!STYLE="background:#ffdead;"|'''Supported platforms'''
+
!STYLE="background:#ffdead;"|'''Unterstützte Plattformen'''
 
|----
 
|----
|'''DBase'''||[[Lazarus_Tdbf_Tutorial | tDbf]]||No|| III+, IV, VII || All
+
|'''Textdateien'''||SDFLaz||Nein||Nein|| - || Alle
 
|----
 
|----
|'''FoxPro'''||[[Lazarus_Tdbf_Tutorial | tDbf]]||No|| - || All
+
|'''Im Speicher'''||MemDSLaz||Nein||Nein|| - || Alle
 
|----
 
|----
|'''In memory'''||memds||No|| - || All
+
|'''DBase'''||[[Lazarus_Tdbf_Tutorial/de | DBFLaz]]||Nein||Nein|| III+, IV, VII || Alle
 
|----
 
|----
|'''Textfiles'''||sdf||No|| - || All
+
|'''FoxPro'''||[[Lazarus_Tdbf_Tutorial/de | DBFLaz]]||Nein||Nein|| 2.0, 2.5, 3.0 (nicht vollständig) || Alle
 
|----
 
|----
|[http://www.borland.com/us/products/interbase/index.html '''Interbase''']||IBase||Yes||4 - 6|| i386: Linux, Win32
+
|'''Paradox'''||[[TParadoxDataSet | TParadoxDataSet]]||Nein||Nein|| bis zu Version 7 (und höher ??) || Alle
 
|----
 
|----
|[http://www.firebirdsql.org/ '''Firebird''']||IBase||Yes||1 - 1.5|| i386: Linux, Win32
+
|[http://www.sqlite.org/ '''SQLite''']||SQLite||Ja||Nein|| 2.x, 3.x || Alle
 
|----
 
|----
|[http://www.postgresql.org/ '''PostgreSQL''']||postgres||Yes|| 6.6 - 8 || i386: Linux, Win32
+
|[http://www.mysql.com/ '''MySQL''']||[[MySQLDatabases/de | SQLdb]]||Ja||Ja|| 3 - 5.5 || i386: Linux, Win32
 
|----
 
|----
|[http://www.oracle.com/ '''Oracle''']||Oracle||Yes|| - || -
+
|[http://www.firebirdsql.org/ '''Firebird''']||IBase||Ja||Depends<sup>1)</sup>||1 - 2.5|| i386: Linux, Win32
 
|----
 
|----
|[http://www.mysql.com/ '''MySQL''']||MySQL||Yes|| 3 - 4.0 || i386: Linux, Win32
+
|[http://www.postgresql.org/ '''PostgreSQL''']||SQLdb||Ja||Ja|| 6.6 - 8 || i386: Linux, Win32
 
|----
 
|----
|[http://www.sqlite.org/ '''SQLite''']||SQLite||Yes|| - || -
+
|'''ODBC'''||[[ODBCConn|SQLdb]]||Ja||Depends|| 3.x <sup>2)</sup> || i386: Linux, Win32
 
|----
 
|----
|'''ODBC'''||ODBC||Yes|| - || i386: Win32
+
|[http://www.embarcadero.com/products/interbase-smp '''Interbase''']||IBase||Ja||Ja||4 - 6|| i386: Linux, Win32
 +
|----
 +
|[http://www.oracle.com/ '''Oracle''']||SQLdb||Ja||Ja|| - || -
 +
|----
 +
|[http://www.advantagedatabase.com/ '''Advantage''']||TAdsDataSet||Ja||Nein||10.1 und höher|| i386: Linux, Win32
 
|}
 
|}
  
== Die Anbindungen zu den Datenbank-Clients ==
+
<sup>1)</sup> Sie können eine eingebettete Version von Firebird zumindest unter Windows benutzen (möglicherweise unter Linux/OSX mit einigen Verrenkungen), oder Sie nehmen eine Server-Version unter Windows/Unix/OSX/FreeBSD/anderen von Firebird unterstützen Plattformen
 +
 
 +
<sup>2)</sup> Diese Versionsnummer bezieht sich auf den ODBC Standard, nicht auf die Versionsnummer eines Treibers oder Treibermanagers. Es gibt ODBC 3.x Treiber für die meisten DBMS.
 +
 
 +
== Weitere Informationen zu Lazarus und Datenbanken ==
 +
 
 +
* FAQ: [[Lazarus DB Faq/de|Lazarus Datenbank FAQ]]
 +
* Tutorial: [[Lazarus Database Tutorial/de|Lazarus Database Tutorial]]
 +
* MySQL: [[MySQLDatabases/de|MySQLDatabases]]
 +
* Firebird: [[Firebird]]
 +
* ODBC: [[ODBCConn]]
 +
 
 +
== Unterschiede zu Delphi ==
 +
 
 +
Der vielleicht wichtigste Vorteil von Lazarus gegenüber Delphi ist die Plattformunabhängigkeit. Das bedeutet auf der anderen Seite, dass es für die Windows-spezifischen Teile bei Delphi (z.B. die BDE) keine direkten Entsprechungen bei Lazarus gibt. Gleiches gilt für die meisten Reporting-Werkzeuge. Bei der Konvertierung eines Delphiprogramms nach Lazarus sollte man auf die verschiedenen Dateisysteme achten, wenn das Programm auf allen von Lazarus unterstützten Plattformen laufen soll. Als Beispiel möchte ich nur die unterschiedlichen Trennzeichen im Pfadnamen ( \ bzw. / ) nennen.
 +
 
 +
== In Lazarus enthaltene Datenbank-Packages ==
 +
 
 +
=== sqldblaz.lpk ===
 +
Dieses Package bietet Zugriff auf verschiedene Datenbanken (z.B. MySQL oder Interbase/Firebird). Das Package wird standardmäßig mit Lazarus installiert (unter Windows). Die Komponenten (TSQLQuery, TSQLTransaction, TIBConnection, TODBCConnection, TOracleConnection, TMySQL40Connection, TMySQL41Connection, TMySQL50Connection, TPQConnection) befinden sich auf der 'SQLdb' Seite in der Komponentenpalette.
 +
 
 +
=== dbflaz.lpk ===
 +
Dieses Package bietet Zugriff auf dBase und FoxPro Datenbanken. Weitere Informationen bietet das [[Lazarus Tdbf Tutorial/de|Lazarus TDbf Tutorial]]. Das Package wird standardmäßig mit Lazarus installiert. Die Komponente TDbf befindet sich auf der 'Data Access' Seite in der Komponentenpalette.
 +
 
 +
=== sqlitelaz.lpk ===
 +
Dieses Package bietet Zugriff auf SQLite Datenbanken. Weitere Informationen sind im [[Lazarus Database Tutorial/de|Lazarus Database Tutorial]] zu finden.
 +
 
 +
=== sdflaz.lpk ===
 +
Das Package wird standardmäßig mit Lazarus installiert. Die Komponente TSdfDataSet befindet sich auf der 'Data Access' Seite in der Komponentenpalette.
 +
 
 +
=== lazreport.lpk ===
 +
Mit LazReport enthält Lazarus auch einen Reportgenerator. Dieser basiert auf FreeReport 2.32. Zum Funktionieren von LazReport muss das Package Printer4Lazarus installiert sein.
 +
(Mit Revision 11950 wurde LazReport in das Lazarus SVN Repository übernommen.)
 +
 
 +
==== lazreportpdfexport.lpk ====
 +
Dieses Package erweitert LazReport um die Möglichkeit, einen Report auch im PDF-Format exportieren zu können.
 +
 
 +
== Externe Komponenten / Bibliotheken ==
 +
 
 +
=== Zeos DataBase Objects ===
 +
Diese Komponenten bieten Zugriff auf verschiedene Datenbanken. Weitere Informationen finden sie [[ZeosDBO|hier]]. Es existiert auch ein [[Zeos tutorial/de|Zeos Tutorial]].
 +
 
 +
=== Pascal Data Objects ===
 +
Die Pascal Data Objects sind von Zeoslib abgeleitet. Es werden die mit MySQL 4.1 und 5.0 eingeführten Funktionen wie prepared statements, binding, und stored procedures von der Datenbank-API namens Pascal Data Objects unterstützt, die durch die PHP Data Objects inspiriert wurde.  Der für die Verwendung dieser neuen API notwendige Code und die Dokumentation sind bei Sourceforge zu finden:
 +
 
 +
http://pdo.sourceforge.net
 +
 
 +
Jan 30, 2007: PDO hat Treiber für Firebird 1.5 und Firebird 2.0 hinzugefügt
 +
 
 +
--[[User:Jrmarino|Jrmarino]] 11:28, 13 Mar 2006 (CET)
 +
 
 +
=== TPSQL ===
 +
Diese Komponenten bieten Zugriff mittels TCP/IP auf PostgreSQL Datenbanken. Weitere Informationen finden sie auf [[TPSQL/de|dieser Seite]].
 +
 
 +
=== FIBL ===
 +
Diese Komponenten bieten Zugriff auf Interbase und Firebird Datenbanken. Die Homepage ist [http://sourceforge.net/projects/fibl http://sourceforge.net/projects/fibl].
 +
 
 +
=== FBLib Firebird Library ===
 +
 
 +
[http://fblib.altervista.org/ FBLib] ist eine Open Source Bibliothek (nicht datensensitiv) für direkten Zugriff auf die Firebird relationale Datenbank von Borland Delphi / Kylix, Free Pascal und Lazarus aus. Für die meisten Benutzer dürfte es gewöhnungsbedürftig sein, dass hier nicht die übliche Anbindung über TDatasource erfolgt.
 +
 
 +
Gegenwärtig sind folgende Features enthalten:
 +
 
 +
* Direkter Zugriff auf Firebird 1.0.x, 1.5.x und 2.x Classic oder SuperServer
 +
* Multiplattform [Win32,Gnu/Linux,FreeBSD)
 +
* Automatische Auswahl der Client Bibliothek 'fbclient' oder 'gds32'
 +
* Abfragen (Queries) mit Parametern
 +
* Unterstützt SQL Dialekt 1/3
 +
* LGPL Lizenzvertrag
 +
* Extrahieren von Metadaten
 +
* Simple Script Parser
 +
* Nur 100-150 KB werden zur finalen EXE hinzugefügt
 +
* Unterstützt BLOB Felder
 +
* Export von Daten als HTML SQL Script
 +
* Service manager (backup, restore, gfix...)
 +
* Events Alerter
  
If you want to use one of the databases-client libraries, those libraries has to be installed. Not only on the computer where you're programming on, but also on the computes where the application must run at. Note that some databases (in particular MySQL) only work if the bindings which are compiled in the application are from the same version as those of the installed libraries. How to install those libraries (.so files on *nix systems, and .dll's on windows) you can find on the website of the database-developers. The binding units can be found in the packages/base directory in the fpc-sources. They basically consist of the client-api calls like mysql_connect_database, which are completely different for each database. It is possible to write database applications using these units, but it is most often far more work and bug-sensitive then using the DB-unit Lazarus components.
+
Sie können die Dokumentation von der [http://fblib.altervista.org/|FBLib Webseite] herunterladen.
  
Most of these bindings-packages are hard-linked to the client-libraries. This means that if the application is compiled with one of these units in it, the whole application can not be linked if the client libraries are not available on the workstation. This means that if you do not have installed - by example - MySQL on your computer, and you are using the mysql4.pp unit in your program. The program woud not link. If you succeed to compile the program on a computer with has MySQL installed, it still won't even start on any other workstation without the appropiate MySQL-libraries.
+
=== Unified Interbase ===
  
To avoid such problems some of the packages are also able to link dynamical to the libraries. Before any calls to those libraries can be made, the unit has to be 'initialised'. This initialisation failes if the database-client isn't installed on the coputer. If the program is ready using the client-library, the unit has to be 'released'.
+
UIB bietet Zugriff auf Interbase, Firebird und YAFFIL Datenbanken. Die Homepage ist [http://www.progdigy.com www.progdigy.com]. Ein SVN-Repository ist verfügbar unter https://uib.svn.sourceforge.net/svnroot/uib .
  
== Die Datenbank-Komponenten in Lazarus ==
+
=== TechInsite Object Persistence Framework (tiOPF) ===
 +
Nähere Informationen zu tiOPF sind auf dieser [[tiOPF/de|Seite]] zu finden.
  
= Zweiter Teil: Benutzung der Komponenten in der DB Unit =
+
=== Advantage TDataSet Descendant ===
 +
Der Advantage TDataSet Descendant bietet ein Mittel für Verbindungen (und Öffnen von Tabellen) mit dem Advantage Database Server. Advantage ist eine flexible, administrations-freie eingebettete Datenbank, die den Zugriff als Client/Server oder als Peer-to-peer auf die Dateiformate Clipper, FoxPro und Visual FoxPro 9 ermöglicht. Ebenso wie auf das eigene Dateiformat, das einen Migrationpfad darstellt, der es erlaubt, neuere Features zu verwenden.
  
This section gives a short tutorial which holds for all the databases based on the db unit. Before you can use the db-unit, a database-component has to be installed. As an example tDbf is used, but every TDataset descendent could be used.
+
Wichtigste Features:
 +
* Gebührenfreier Peer-to-peer - Datenbankzugriff mit Migrationspfad zu Client/Server
 +
* Multi-Platform (Clients unterstützt unter Windows und Linux, Server unterstützt unter Windows, Linux und NetWare)
 +
* Unterstützt sowohl navigationalen als auch relationalen SQL-Datenbankzugriff
 +
* Volltext-Suchmaschine
 +
* Tabellen-, Index-, Memo- und Kommunikationsverschlüsselung
 +
* Kompatibel mit den originalen TDataset-Komponenten
 +
* Online-Backup
 +
* Server unterstützt Replikation
  
'''Schritt eins:'''
+
Für weitere Informationen, siehe die [http://www.advantagedatabase.com Advantage Database Server] Website.
Erzeugen sie eine neue Lazarus Anwendung
 
  
'''Schritt zwei:'''
+
== Gängige Stolperfallen für Einsteiger / Hinweise zur Fehlersuche ==
Legen sie eine [[Lazarus_Tdbf_Tutorial/de | Tdbf Komponente]] auf ihrem Formular ab. (oder jeden anderen TDataset Nachfahren natürlich) Dieser TDataset-Nachfahre is to access the data in a table or query.  
+
===  Fehlermeldung "Operation cannot be performed in an inactive dataset" bei Nachschlagefeldern ===
 +
* Man stelle zunächst sicher, daß das Unit der DataModule vor der des Anwendungsformulars aktiviert wird. Hierzu editiert man die '''projectX.lpr''' und bringt die Create-Zeilen in passende Reihenfolge:
 +
begin
 +
  RequireDerivedFormResource:=True;
 +
  Application.Initialize;
 +
  Application.CreateForm(TDataModule1, DataModule1); //Erst das DataModule!
 +
  Application.CreateForm(TForm1, Form1);
 +
  Application.Run;
 +
end.
 +
                     
 +
* Das Problem kann immer noch auftreten, falls das Dataset der Haupttabelle vor dem Datset der Nachschlagetabelle aktiviert wird. Es ließe sich auf "visuelle" Weise nur verhindern, wenn der Designer eine Möglichkeit böte, die '''Erstellungsreihenfolge ("Creation Order")''' der Komponenten zu definieren. Anders als Delphi bietet Lazarus derzeit (Stand 2017-02) diese Möglichkeit noch nicht.
  
'''Schritt drei:'''
+
Abhilfe ist trotzdem einfach:  
Drop a tDBF and a TDatasource component on your form. (Or any other TDataset descendent, offcourse) The TDataset is to access the data in a table or query, the TDatasource is the 'link' between the TDataset and the visible components on the form, like a TDBEdit. Link the dataset and the datasource to each other by setting the 'Dataset' property of the TDatasource to the TDataset. (In this case: Dbf1)
+
* Vor dem Kompilieren muß man alle Connections im Designer trennen (disconnect). Damit werden auch alle Datasets implizt deaktiviert.
 +
* An geeigneter Stelle [z.B. in .DataModuleCreate des DataModuls oder bei einer nicht lokalen Datenbank noch besser in einer vorgeschalteten Loginprozedur, welche die korrekte Anmeldung und Verbindung zur Datenbank sicherstellt] aktiviert man sie wieder, und im Anschluß lassen sich die Datasets in sinnvoller, definierter Reihenfolge aktiv schalten:
  
 +
  DataModule1.ZConInventory.Connect;
 +
  //Aktivieren der Datasets: Lookup-Datasets zuerst!
 +
  DataModule1.ztNachschlagetabelle.Active := True;
 +
  DataModule1.ztHaupttabelle.Active := True;
 +
  DataModule1.(...)
  
 +
== Siehe auch ==
  
 +
* [[Lazarus DB Faq]]
  
--[[User:Loesje|Loesje]] 14:39, 10 Feb 2005 (PST)
+
[[Category:Databases/de]]

Latest revision as of 13:19, 15 February 2017

Deutsch (de) English (en) español (es) français (fr) italiano (it) 日本語 (ja) português (pt) русский (ru) 中文(中国大陆)‎ (zh_CN)

Diese Seite ist noch unfertig ...

Artikel über Datenbank-Programmierung

  • Lazarus-Datenbank-Tutorial - Eine Einführung über die Verwendung von Lazarus mit Datenbanken.
  • Datenbanken - Allgemeine Informationen über die Einsatzmöglichkeiten von Lazarus und FPC mit Datenbanken.
  • Datenbanken mit Lazarus - liefert einen allgemeinen Überblick über die Verwendung von Datenbanken mit Lazarus.
  • How to write in-memory database applications in Lazarus/FPC - Praktische Anweisungen zum programmieren mit MemDatasets
  • MySQLDatabases/de - erklärt, wie man auf eine einfachere Weise eine Verbindung mit einem MySQL Server herstellt.
  • Zeos_tutorial/de - Erzeugen von Datenbank-Anwendungen mit den Zeos-Komponenten.
  • Zeos+SQLite Tutorial - Gutes Tutorial mit Screenshots und Screencasts es wird auf spanisch erläutert, wie SQLite und Zeos, verwendet werden.
  • Pascal Data Objects is a database API that worked for both FPC and Delphi and utilises native MySQL libraries for version 4.1 and 5.0 and Firebird SQL 1.5, and 2.0. It's inspired by PHP's PDO class.
  • Lazarus Tdbf Tutorial/de - Datenbank-Entwicklung unter Verwendung der TDbf-Komponente (entwickelt von Micha Nelissen) mit Lazarus
  • Lazarus DB FAQ (deutsch) - Häufig gestellte Fragen zur Datenbank-Programmierung mit Lazarus.
  • Firebird - Firebird zusamen mit FPC/Lazarus verwenden
  • ODBCConn - Verwendung von 'ODBCConn' unter FPC/Lazarus für Verbindungen zu ODBC-Datenquellen.
  • MS Access - Zugriff auf eine MS-Access Datenbank

Einleitung

Wie bei anderen Entwicklungssystemen auch spielt die Zusammenarbeit mit verschiedenen Datenbanken bei Lazarus eine bedeutende Rolle. Während ein Teil der Funktionalität schon mit FPC zur Verfügung steht, kommen andere Teile (insbesondere die visuellen Komponenten) erst mit Lazarus selbst hinzu. Die bei Lazarus enthaltenen Komponenten decken schon ein gewisses Spektrum an Datenbanken ab. Da aber immer Verbesserungsbedarf besteht und es auch exotischere Datenbanken gibt, existieren externe Komponenten / Bibliotheken, die die Möglichkeiten von Lazarus erweitern.

Diese Seite stellt einen Einstieg für das Thema 'Lazarus und Datenbanken' dar. Die folgende Tabelle bietet einen Überblick über die unterstützten Datenbanken. Da sie noch auf dem Stand von FPC 1.9.7 basiert, sollte sie schnellstens auf den aktuellen Stand gebracht werden. Ein Hinweis noch an alle Experimentierfreudigen: Installieren sie nur die Datenbank-Komponenten, deren Client-Bibliotheken (falls diese erforderlich sind) auf ihrem Computer installiert sind. Sonst kann es passieren, dass Lazarus den Start mit einer Fehlermeldung (wegen fehlender Dateien) verweigert. Da sie somit keine Möglichkeit mehr haben, die Komponenten zu deinstallieren, ist eine Neuinstallation von Lazarus erforderlich.

Tabelle 1

Datenbank Package Name Benötigt eine
Client Bibliothek?
Benötigt Server? Unterstützte Versionen Unterstützte Plattformen
Textdateien SDFLaz Nein Nein - Alle
Im Speicher MemDSLaz Nein Nein - Alle
DBase DBFLaz Nein Nein III+, IV, VII Alle
FoxPro DBFLaz Nein Nein 2.0, 2.5, 3.0 (nicht vollständig) Alle
Paradox TParadoxDataSet Nein Nein bis zu Version 7 (und höher ??) Alle
SQLite SQLite Ja Nein 2.x, 3.x Alle
MySQL SQLdb Ja Ja 3 - 5.5 i386: Linux, Win32
Firebird IBase Ja Depends1) 1 - 2.5 i386: Linux, Win32
PostgreSQL SQLdb Ja Ja 6.6 - 8 i386: Linux, Win32
ODBC SQLdb Ja Depends 3.x 2) i386: Linux, Win32
Interbase IBase Ja Ja 4 - 6 i386: Linux, Win32
Oracle SQLdb Ja Ja - -
Advantage TAdsDataSet Ja Nein 10.1 und höher i386: Linux, Win32

1) Sie können eine eingebettete Version von Firebird zumindest unter Windows benutzen (möglicherweise unter Linux/OSX mit einigen Verrenkungen), oder Sie nehmen eine Server-Version unter Windows/Unix/OSX/FreeBSD/anderen von Firebird unterstützen Plattformen

2) Diese Versionsnummer bezieht sich auf den ODBC Standard, nicht auf die Versionsnummer eines Treibers oder Treibermanagers. Es gibt ODBC 3.x Treiber für die meisten DBMS.

Weitere Informationen zu Lazarus und Datenbanken

Unterschiede zu Delphi

Der vielleicht wichtigste Vorteil von Lazarus gegenüber Delphi ist die Plattformunabhängigkeit. Das bedeutet auf der anderen Seite, dass es für die Windows-spezifischen Teile bei Delphi (z.B. die BDE) keine direkten Entsprechungen bei Lazarus gibt. Gleiches gilt für die meisten Reporting-Werkzeuge. Bei der Konvertierung eines Delphiprogramms nach Lazarus sollte man auf die verschiedenen Dateisysteme achten, wenn das Programm auf allen von Lazarus unterstützten Plattformen laufen soll. Als Beispiel möchte ich nur die unterschiedlichen Trennzeichen im Pfadnamen ( \ bzw. / ) nennen.

In Lazarus enthaltene Datenbank-Packages

sqldblaz.lpk

Dieses Package bietet Zugriff auf verschiedene Datenbanken (z.B. MySQL oder Interbase/Firebird). Das Package wird standardmäßig mit Lazarus installiert (unter Windows). Die Komponenten (TSQLQuery, TSQLTransaction, TIBConnection, TODBCConnection, TOracleConnection, TMySQL40Connection, TMySQL41Connection, TMySQL50Connection, TPQConnection) befinden sich auf der 'SQLdb' Seite in der Komponentenpalette.

dbflaz.lpk

Dieses Package bietet Zugriff auf dBase und FoxPro Datenbanken. Weitere Informationen bietet das Lazarus TDbf Tutorial. Das Package wird standardmäßig mit Lazarus installiert. Die Komponente TDbf befindet sich auf der 'Data Access' Seite in der Komponentenpalette.

sqlitelaz.lpk

Dieses Package bietet Zugriff auf SQLite Datenbanken. Weitere Informationen sind im Lazarus Database Tutorial zu finden.

sdflaz.lpk

Das Package wird standardmäßig mit Lazarus installiert. Die Komponente TSdfDataSet befindet sich auf der 'Data Access' Seite in der Komponentenpalette.

lazreport.lpk

Mit LazReport enthält Lazarus auch einen Reportgenerator. Dieser basiert auf FreeReport 2.32. Zum Funktionieren von LazReport muss das Package Printer4Lazarus installiert sein. (Mit Revision 11950 wurde LazReport in das Lazarus SVN Repository übernommen.)

lazreportpdfexport.lpk

Dieses Package erweitert LazReport um die Möglichkeit, einen Report auch im PDF-Format exportieren zu können.

Externe Komponenten / Bibliotheken

Zeos DataBase Objects

Diese Komponenten bieten Zugriff auf verschiedene Datenbanken. Weitere Informationen finden sie hier. Es existiert auch ein Zeos Tutorial.

Pascal Data Objects

Die Pascal Data Objects sind von Zeoslib abgeleitet. Es werden die mit MySQL 4.1 und 5.0 eingeführten Funktionen wie prepared statements, binding, und stored procedures von der Datenbank-API namens Pascal Data Objects unterstützt, die durch die PHP Data Objects inspiriert wurde. Der für die Verwendung dieser neuen API notwendige Code und die Dokumentation sind bei Sourceforge zu finden:

http://pdo.sourceforge.net

Jan 30, 2007: PDO hat Treiber für Firebird 1.5 und Firebird 2.0 hinzugefügt

--Jrmarino 11:28, 13 Mar 2006 (CET)

TPSQL

Diese Komponenten bieten Zugriff mittels TCP/IP auf PostgreSQL Datenbanken. Weitere Informationen finden sie auf dieser Seite.

FIBL

Diese Komponenten bieten Zugriff auf Interbase und Firebird Datenbanken. Die Homepage ist http://sourceforge.net/projects/fibl.

FBLib Firebird Library

FBLib ist eine Open Source Bibliothek (nicht datensensitiv) für direkten Zugriff auf die Firebird relationale Datenbank von Borland Delphi / Kylix, Free Pascal und Lazarus aus. Für die meisten Benutzer dürfte es gewöhnungsbedürftig sein, dass hier nicht die übliche Anbindung über TDatasource erfolgt.

Gegenwärtig sind folgende Features enthalten:

  • Direkter Zugriff auf Firebird 1.0.x, 1.5.x und 2.x Classic oder SuperServer
  • Multiplattform [Win32,Gnu/Linux,FreeBSD)
  • Automatische Auswahl der Client Bibliothek 'fbclient' oder 'gds32'
  • Abfragen (Queries) mit Parametern
  • Unterstützt SQL Dialekt 1/3
  • LGPL Lizenzvertrag
  • Extrahieren von Metadaten
  • Simple Script Parser
  • Nur 100-150 KB werden zur finalen EXE hinzugefügt
  • Unterstützt BLOB Felder
  • Export von Daten als HTML SQL Script
  • Service manager (backup, restore, gfix...)
  • Events Alerter

Sie können die Dokumentation von der Webseite herunterladen.

Unified Interbase

UIB bietet Zugriff auf Interbase, Firebird und YAFFIL Datenbanken. Die Homepage ist www.progdigy.com. Ein SVN-Repository ist verfügbar unter https://uib.svn.sourceforge.net/svnroot/uib .

TechInsite Object Persistence Framework (tiOPF)

Nähere Informationen zu tiOPF sind auf dieser Seite zu finden.

Advantage TDataSet Descendant

Der Advantage TDataSet Descendant bietet ein Mittel für Verbindungen (und Öffnen von Tabellen) mit dem Advantage Database Server. Advantage ist eine flexible, administrations-freie eingebettete Datenbank, die den Zugriff als Client/Server oder als Peer-to-peer auf die Dateiformate Clipper, FoxPro und Visual FoxPro 9 ermöglicht. Ebenso wie auf das eigene Dateiformat, das einen Migrationpfad darstellt, der es erlaubt, neuere Features zu verwenden.

Wichtigste Features:

  • Gebührenfreier Peer-to-peer - Datenbankzugriff mit Migrationspfad zu Client/Server
  • Multi-Platform (Clients unterstützt unter Windows und Linux, Server unterstützt unter Windows, Linux und NetWare)
  • Unterstützt sowohl navigationalen als auch relationalen SQL-Datenbankzugriff
  • Volltext-Suchmaschine
  • Tabellen-, Index-, Memo- und Kommunikationsverschlüsselung
  • Kompatibel mit den originalen TDataset-Komponenten
  • Online-Backup
  • Server unterstützt Replikation

Für weitere Informationen, siehe die Advantage Database Server Website.

Gängige Stolperfallen für Einsteiger / Hinweise zur Fehlersuche

Fehlermeldung "Operation cannot be performed in an inactive dataset" bei Nachschlagefeldern

  • Man stelle zunächst sicher, daß das Unit der DataModule vor der des Anwendungsformulars aktiviert wird. Hierzu editiert man die projectX.lpr und bringt die Create-Zeilen in passende Reihenfolge:
begin
 RequireDerivedFormResource:=True;
 Application.Initialize;
 Application.CreateForm(TDataModule1, DataModule1); //Erst das DataModule!
 Application.CreateForm(TForm1, Form1);
 Application.Run;
end.
                     
  • Das Problem kann immer noch auftreten, falls das Dataset der Haupttabelle vor dem Datset der Nachschlagetabelle aktiviert wird. Es ließe sich auf "visuelle" Weise nur verhindern, wenn der Designer eine Möglichkeit böte, die Erstellungsreihenfolge ("Creation Order") der Komponenten zu definieren. Anders als Delphi bietet Lazarus derzeit (Stand 2017-02) diese Möglichkeit noch nicht.

Abhilfe ist trotzdem einfach:

  • Vor dem Kompilieren muß man alle Connections im Designer trennen (disconnect). Damit werden auch alle Datasets implizt deaktiviert.
  • An geeigneter Stelle [z.B. in .DataModuleCreate des DataModuls oder bei einer nicht lokalen Datenbank noch besser in einer vorgeschalteten Loginprozedur, welche die korrekte Anmeldung und Verbindung zur Datenbank sicherstellt] aktiviert man sie wieder, und im Anschluß lassen sich die Datasets in sinnvoller, definierter Reihenfolge aktiv schalten:
 DataModule1.ZConInventory.Connect;
 //Aktivieren der Datasets: Lookup-Datasets zuerst!
 DataModule1.ztNachschlagetabelle.Active := True;
 DataModule1.ztHaupttabelle.Active := True;
 DataModule1.(...)

Siehe auch