Herstellen einer Verbindung zu PostgreSQL (FireDAC)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Datenbankkonnektivität (FireDAC)

In diesem Thema wird beschrieben, wie eine Verbindung zu PostgreSQL hergestellt wird.

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.

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/en-us/download/details.aspx?id=8328 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.
  • Einen beliebigen anderen Ordner, und in der FDDrivers.ini Folgendes angeben:
 [PG]
 VendorLib=<folder>\libpq.dll

Wenn die PostgreSQL-Client-Bibliothek nicht ordnungsgemäß installiert wurde, wird beim Verbindungsversuch eine Exception ausgelöst:

[FireDAC][Phys][PGSQL]-314. Cannot load vendor library [LIBPQ.DLL]. The specified module could not be found. Check [LIBPQ.DLL], which is located in one of the PATH directories or in application EXE directory.

oder

The ordinal Nnn could not be located in the dynamic link library SSLEAY32.dll.

Mac OS X-Client-Software

FireDAC benötigt:

  • die x86-Client-Bibliothek libclibpq.dylib.

Diese Bibliothek ist auf Mac OS X 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.

Treibereinbindung

So binden Sie den Treiber 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

Für eine Verbindung mit einem PostgreSQL-DBMS ist für die meisten Anwendungen die Angabe von DriverID, Server, Database, User_Name, Password und CharacterSet erforderlich (Einzelheiten 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:
  • True – FireDAC beschreibt eine Ergebnismenge, um alle möglichen Spaltenattribute abzurufen - Null akzeptieren, wird automatisch inkrementiert, Domänenzugehörigkeit usw. Durch Setzen dieser Option auf True wird das Öffnen von Datenmengen geringfügig verlangsamt.
  • False – FireDAC verwendet die beschränkten Informationen über die Abfragespalten (Vorgabe).
False
OidAsBlob Steuert die Interpretation einer OID-Spalte in einer Tabelle:
  • No – eine OID-Spalte ist eine dtUInt32-Spalte (enthält Integerwerte ohne Vorzeichen).
  • Yes – eine OID-Spalte ist eine dtHBlob-Spalte (enthält Large Object-Werte).
  • Choose – wenn eine Abfrage Daten aus den Dictionary-Tabellen oder aus einer Spalte auswählt, die keiner LO-, LargeObject- oder BLOB-Domäne angehören, dann ist eine OID-Spalte eine dtUInt32-Spalte, ansonsten eine dtHBlob-Spalte. Die Option "ExtendedMetadata" muss True sein, damit eine Spaltendomäne abgerufen werden kann (Vorgabe).
Yes
UnknownFormat Steuert die Behandlung eines unbekannten PostgreSQL-Datentyps:
  • Error – löst die Exception "Typ kann nicht beschrieben werden" aus (Vorgabe).
  • BYTEA – wird als BLOB-Wert dargestellt.
BYTEA
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

Siehe auch