Difference between revisions of "Databases/de"

From Lazarus wiki
Jump to navigationJump to search
Line 10: Line 10:
 
==Einleitung==
 
==Einleitung==
  
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)
+
Die Datenbanken, die sie mit Lazarus benutzen können, (eigentlich mit FPC, aber das ist nicht so wichtig für den Rest der Geschichte) lassen sich in zwei Kategorien unterteilen: Die Datenbanken, die komplett 'intern' sind und geschrieben in Freepascal, und die 'externen' Datenbanken, zu denen die Verbindungen mit Client-Bibliotheken hergestellt werden. Um diese Client-Bibliotheken zu benutzen müssen die passenden Verbindungen verfügbar sein. Die meisten Client-Bibliotheken kommen nur mit Verbindungen für C, aber FPC bietet verschiedene Packages mit den Pascal-Verbindungen für Datenbank Clients. Die unterstützten Datenbanken sind in Tablle 1 aufgelistet (Stand FPC 1.9.7).
  
 
===Tabelle 1===
 
===Tabelle 1===

Revision as of 19:54, 20 September 2005

Arbeit ist im Gange..

Einführung

Diese Seite handelt über die Erzeugung von Datenbank Anwendungen mit Lazarus unter Verwendung der DB Unit. In der DB Unit ist die grundlegende Funktionalität für die Arbeit mit Datenbanken implementiert, aber um nützlich zu sein, brauchen sie Komponenten, welche von der Datenabnk abhängen, die sie benutzen wollen.

Der erste Teil bietet eine kurze Einführung über verschiedene Datenbank-abhängige Komponenten und wie man sie installiert, der zweite Teil ist ein kurzer Kursus im Arbeiten mit der DB Unit und der letzte Teil bietet spezifische Informationen über verschiedene unterstützte Datenbanken.

Erster Teil: Allgemeine Informationen über unterstützte Datenbanken

Einleitung

Die Datenbanken, die sie mit Lazarus benutzen können, (eigentlich mit FPC, aber das ist nicht so wichtig für den Rest der Geschichte) lassen sich in zwei Kategorien unterteilen: Die Datenbanken, die komplett 'intern' sind und geschrieben in Freepascal, und die 'externen' Datenbanken, zu denen die Verbindungen mit Client-Bibliotheken hergestellt werden. Um diese Client-Bibliotheken zu benutzen müssen die passenden Verbindungen verfügbar sein. Die meisten Client-Bibliotheken kommen nur mit Verbindungen für C, aber FPC bietet verschiedene Packages mit den Pascal-Verbindungen für Datenbank Clients. Die unterstützten Datenbanken sind in Tablle 1 aufgelistet (Stand FPC 1.9.7).

Tabelle 1

Datenbank Package Name Need Client Lib? Unterstützte Versionen Unterstützte Plattformen
DBase Tdbf Nein III+, IV, VII Alle
FoxPro Tdbf Nein - Alle
In memory memds Nein - Alle
Textdateien sdf Nein - Alle
Interbase IBase Ja 4 - 6 i386: Linux, Win32
Firebird IBase Ja 1 - 1.5 i386: Linux, Win32
PostgreSQL postgres Ja 6.6 - 8 i386: Linux, Win32
Oracle Oracle Ja - -
MySQL MySQL Ja 3 - 4.0 i386: Linux, Win32
SQLite SQLite Ja - -
ODBC ODBC Ja - i386: Win32

Die Anbindungen zu den Datenbank-Clients

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.

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.

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'.

Die Datenbank-Komponenten in Lazarus

Zweiter Teil: Benutzung der Komponenten in der DB Unit

Dieser Abschnitt bietet ein kurzes Tutorial, welches für alle Datenbanken gilt, die auf der DB Unit basieren. Bevor sie die DB Unit benutzen können, muß eine Datenbank-Komponente installiert sein. Als Beispiel wird Tdbf genutzt, aber jeder TDataset Nachahre könnte genutzt werden.

Schritt eins: Erzeugen sie eine neue Lazarus Anwendung

Schritt zwei: Legen sie eine Tdbf Komponente auf ihrem Formular ab. (oder jeden anderen TDataset Nachfahren natürlich) Dieser TDataset-Nachfahre dient dazu, Daten in einer Tabelle oder Query abzurufen.

Schritt drei: Legen Sie eine Tdbf und eine TDatasource Komponente auf ihrem Formular ab. Die Tdbf dient dazu, Daten in einer Tabelle oder Query abzurufen, die TDatasource ist das Bindeglied zwischen TDataset und den sichtbaren Komponenten auf dem Formular, wie TDBEdit. Die beiden Komponenten verbindet man miteinander, indem man die 'Dataset' Eigenschaft von TDatasource auf das TDataset setzt. (In diesem Fall: Dbf1)



--Loesje 14:39, 10 Feb 2005 (PST)