Herstellen einer Verbindung zu PostgreSQL (FireDAC)
Nach oben zu Datenbankkonnektivität (FireDAC)
In diesem Thema wird beschrieben, wie eine Verbindung zu PostgreSQL hergestellt wird.
Inhaltsverzeichnis
Unterstützte Versionen
Der native FireDAC-Treiber unterstützt PostgreSQL Server und PostgreSQL Advanced Version 7.4 und höher, da für diese eine PG-Protokoll 3.0-Verbindung erforderlich ist.
Client-Software
Windows-Client-Software
FireDAC benötigt die x86- oder x64-Client-Bibliothek LIBPQ.DLL, um eine Verbindung zum PostgreSQL-Server herzustellen. Für die Verwendung von libpq.dll ist auch die Installation von "Microsoft Visual C++ 2010 Redistributable Package" erforderlich. Sie können dieses Packet von http://www.microsoft.com/de-de/download/details.aspx?id=8328 (EN) herunterladen. Idealerweise sollte die libpq.dll-Version mit der Serverversion übereinstimmen. Die Client-Dateien der Version 9.0:
- libpq.dll
- ssleay32.dll
- libeay32.dll
- libintl-8.dll
- libiconv-2.dll
Sie können diese Bibliotheken aus dem Ordner "Bin" der Serverinstallation (Details (EN)) übernehmen und in einen der folgenden Ordner kopieren:
- Einen in der Umgebungsvariable PATH aufgeführten Ordner.
- Ihren Anwendungs-EXE-Ordner.
Alternativ können Sie die benötigten Dateien in jeden anderen Ordner kopieren und deren Pfad in FDDrivers.ini angeben:
[PG]
VendorLib=<folder>\libpq.dll
Wenn die PostgreSQL-Client-Bibliothek nicht korrekt installiert wurde, wird eine Exception ausgelöst, wenn Sie versuchen eine Verbindung herzustellen:
oder
macOS-Client-Software
FireDAC benötigt:
- die x86-Client-Bibliothek libclibpq.dylib.
Diese Bibliothek ist auf macOS vorinstalliert oder kann separat installiert werden (weitere Informationen (EN)).
iOS-Client-Software
Im Artikel (Weitere Informationen (EN)) wird beschrieben, wie libpq.dylib für iOS erzeugt wird.
Beachten Sie bitte, dass dies von Embarcadero Technologies nicht getestet wurde und Embarcadero Technologies dafür auch keine Unterstützung bietet.
Linux-Client-Software
Um die PostgreSQL-Client-Bibliothek zu installieren:
-
Auf Ubuntu Server 16.04 LTS, führen Sie aus:
sudo apt-get install libpq5 sudo ln -s /usr/lib/x86_64-linux-gnu/libpq.so.5 /usr/lib/x86_64-linux-gnu/libpq.so
-
Auf Red Hat Enterprise Linux 7, führen Sie aus:
sudo yum install postgresql-libs sudo ln -s /usr/lib64/libpq.so.5 /usr/lib64/libpq.so
Treibereinbindung
So binden Sie den Treiber ein:
- Ziehen Sie aus der Paletten-Seite "FireDAC Links" eine TFDPhysPgDriverLink-Komponente auf das Formular.
- Oder fügen Sie die Unit FireDAC.Phys.PG in die uses-Klausel ein.
Zusatzkonfiguration
Wenn eine Anwendung die Escape-Funktion {TIMESTAMPDIFF(MONTH, ....)} verwendet, dann wird die Erstellung von 3 PostgreSQL-Funktionen mit den folgenden Argumenttypen empfohlen:
- DATE
- TIMESTAMP
- TIMESTAMP WITH TIME ZONE
Die Funktionsvorlage:
CREATE OR REPLACE FUNCTION MONTHS_BETWEEN (timestamp with time zone, timestamp with time zone) RETURNS integer AS
$body$
DECLARE
mes INTEGER;
mes1 INTEGER;
ano INTEGER;
begin
mes=extract(month from (age($1,$2)));
ano=extract(year from (age($1,$2)));
mes1=abs((ano*12) + mes);
return mes1;
end
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
Verbindungsdefinitionsparameter
Um eine Verbindung mit einem PostgreSQL-DBMS herzustellen, müssen Sie für die meisten Anwendungen DriverID, Server, Database, User_Name, Password und CharacterSet angeben (weitere Informationen finden Sie unter Definieren von Verbindungen (FireDAC)).
DriverID=PG
Parameter | Beschreibung | Beispielwert |
---|---|---|
Server | Die TCP/IP-Adresse oder der Host-Name des Servers, auf dem ein PostgreSQL-Server ausgeführt wird. | 127.0.0.1 |
Port | Der TCP/IP-Port, über den der PostgreSQL-Server empfängt. | 5432 |
Database | Name der aktuellen Datenbank für die Verbindung. Wenn "Database" nicht angegeben ist, wird keine aktuelle Datenbank eingerichtet. | MyDB |
User_Name | Die PostgreSQL-Benutzer-ID. | postgres |
Password | Das PostgreSQL-Benutzerpasswort. | |
CharacterSet | Der Standardzeichensatz für die Verbindung. Einzelheiten finden Sie im Kapitel Character Set Support (EN). | WIN1251 |
LoginTimeout | Steuert die Dauer in Sekunden bis zur Zeitüberschreitung einer Anwendung beim Versuch, eine Verbindung herzustellen. | 30 |
ExtendedMetadata |
Steuert die erweiterte Beschreibung von Abfrage-Ergebnismengen:
|
False |
OidAsBlob |
Steuert die Interpretation einer OID-Spalte in einer Tabelle:
|
Yes |
UnknownFormat |
Steuert die Behandlung eines unbekannten PostgreSQL-Datentyps:
|
BYTEA |
ArrayScanSample | Legt fest, ob die eingeschränkten Arrays zu ftArray oder ftDataSet zugeordnet werden.
Verwenden Sie ArrayScanSample=<RowsToScan>[;<DefaultArraySize>], um diesen Verbindungsparameter zu definieren. Es funktioniert wie folgt:
|
|
ApplicationName | Name der Anwendung. Wenn angegeben, wird dieser Wert in der Tabelle pg_stat_activity in der Spalte application_name gespeichert. | AllBooks |
PGAdvanced | Zusätzliche PostgreSQL-Serververbindungsoptionen. Einzelheiten hierzu finden Sie im Absatz "PQconnectdb" des Kapitels Database Connection Control Functions (EN). Ein Wertformat ist – <Option>=<Wert>[;...]. | |
MetaDefSchema | Standardschemaname. Im Entwurfszeitcode wird der Katalogname im Objektnamen weggelassen, wenn er MetaDefSchema entspricht. Durch Setzen von MetaDefSchema wird der aktuelle Schemasuchpfad in der PostgreSQL-Sitzung nicht geändert. "public" ist der Vorgabewert. | MySchema |
Anwendungsfälle
- Herstellen einer Verbindung zu einem lokal ausgeführtem Server, der über den Standard-Port (5432) empfängt:
DriverID=PG Database=addemo
- Herstellen einer Verbindung zu einem Remote-Server, der nicht über den Standard-Port empfängt, unter Verwendung von Unicode für Zeichendaten:
DriverID=PG Server=pgsrv Port=5433 Database=addemo CharacterSet=utf8 MetaDefSchema=MySchema ExtendedMetadata=True