Connexion à PostgreSQL (FireDAC)
Remonter à Connectivité des bases de données (FireDAC)
Cette rubrique explique comment établir la connexion à PostgreSQL.
Sommaire
Versions prises en charge
Le pilote natif FireDAC supporte le serveur PostgreSQL et PostgreSQL Advanced version 7.4 et ultérieure, car il requiert une connexion à l'aide du protocole PG 3.0.
Logiciel client
Logiciel client Windows
FireDAC requiert la bibliothèque client LIBPQ.DLL x86 ou x64 pour se connecter au serveur PostgreSQL. L'utilisation de libpq.dll requiert aussi que le package redistribuable Microsoft Visual C++ 2010 soit installé. Vous pouvez obtenir ce package depuis http://www.microsoft.com/en-us/download/details.aspx?id=8328. Dans l'idéal, la version de libpq.dll doit être équivalente à celle du serveur. L'ensemble complet des fichiers client de la version 9.0 :
- libpq.dll
- ssleay32.dll
- libeay32.dll
- libintl-8.dll
- libiconv-2.dll
Vous pouvez les extraire du dossier Bin ou Lib d'installation du serveur (informations détaillées) et les placer dans :
- un dossier inclus dans votre variable d'environnement PATH.
- le dossier EXE de votre application.
Sinon, vous pouvez placer les fichiers nécessaires dans tout autre doisser et spécifier leur chemin d'accès dans FDDrivers.ini :
[PG]
VendorLib=<folder>\libpq.dll
Si la bibliothèque client PostgreSQL n'a pas été installée correctement, une exception est déclenchée quand vous essayez de vous connecter :
ou
Logiciel client OS X
FireDAC requiert :
- la bibliothèque client libpq.dylib x86.
Elle est pré-installée sous OS X ou peut être installée séparément (davantage d'informations (EN)).
Logiciel client iOS
L'article (davantage d'informations) explique comment construire libpq.dylib pour iOS.
Notez que Embarcadero Technologies n'a pas testé ce produit et ne fournit aucune assistance pour lui.
Logiciel client Linux
Pour installer la bibliothèque client PostgreSQL :
-
Sur Ubuntu Server 16.04 LTS, exécutez :
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
-
Sur Red Hat Enterprise Linux 7, exécutez :
sudo yum install postgresql-libs sudo ln -s /usr/lib64/libpq.so.5 /usr/lib64/libpq.so
Liaison du pilote
Pour lier le pilote :
- déposez un composant TFDPhysPgDriverLink à partir de la page "Liens FireDAC" de la palette de composants
- ou incluez l'unité FireDAC.Phys.PG dans la clause uses.
Autres paramètres
Si une application utilise la fonction d'échappement {TIMESTAMPDIFF(MONTH, ....)}, nous vous recommandons de créer trois fonctions PostgreSQL avec les types d'arguments suivants :
- DATE
- TIMESTAMP
- TIMESTAMP WITH TIME ZONE.
Le modèle de fonction :
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;
Paramètres de définition de la connexion
Pour se connecter à un SGBD PostgreSQL, la plupart des applications vous demandent de spécifier DriverID', Server, Database, User_Name, Password et CharacterSet'. Pour plus de détails, voir Définition d'une connexion (FireDAC).
DriverID=PG
Paramètre | Description | Valeur exemple |
---|---|---|
Pooled | Active le pooling de connexion pour cette définition de connexion. La valeur par défaut est False. Pour utiliser une connexion mise en pool, la définition de connexion doit être persistante ou privée. | True |
Database | Nom de la base de données en cours pour la connexion. Si ce paramètre n'est pas spécifié, aucune base de données n'est configurée. | MyDB |
User_Name | ID utilisateur PostgreSQL. | postgres |
Password | Mot de passe utilisateur PostgreSQL. | |
MonitorBy | Spécifie la sortie moniteur (la sortie de suivi) pour cette définition de connexion. L'une des valeurs suivantes peut être spécifiée :
|
FlatFile |
Server | Adresse TCP/IP ou nom d'hôte du serveur exécutant un serveur PostgreSQL. | 127.0.0.1 |
Port | Port TCP/IP sur lequel le serveur PostgreSQL écoute. | 5432 |
LoginTimeout | Contrôle la durée, en secondes, s’écoulant avant qu'une application dépasse le temps imparti pour établir la connexion. | 30 |
CharacterSet | Jeu de caractères par défaut de la connexion. Pour plus de détails, voir Character Set Support (EN). | WIN1251 |
ExtendedMetadata |
Contrôle la description étendue des ensembles de résultats d'une requête :
|
False |
OidAsBlob |
Contrôle l'interprétation d'une colonne OID dans une table :
|
Yes |
UnknownFormat |
Contrôle la gestion d'un type de données PostgreSQL inconnu :
|
BYTEA |
ArrayScanSample | Détermine si des tableaux soumis à des contraintes sont mappés en ftArray ou ftDataSet .
Pour spécifier le paramètre de connexion, utilisez ArrayScanSample=<RowsToScan>[;<DefaultArraySize>]. Il est effectué comme suit :
|
|
ApplicationName | Nom de l'application. Si cette valeur est spécifiée, elle est stockée dans la table pg_stat_activity, colonne application_name. | AllBooks |
PGAdvanced | Autres options de connexion au serveur PostgreSQL. Pour plus de détails, voir Database Connection Control Functions (EN), paragraphe PQconnectdb. La valeur a pour format - <option>=<valeur>[;...]. | |
MetaDefSchema | Nom du schéma par défaut. En mode conception, le code exclut le nom du catalogue du nom de l'objet, s'il est égal à MetaDefSchema. Le fait de définir MetaDefSchema ne change pas le chemin de recherche du schéma actuel dans la session PostgreSQL. La valeur par défaut est "public". | MySchema |
MetaCurSchema | Spécifie le schéma en cours pour l'application. S'il n'est pas spécifié, sa valeur est envoyée par le SGBD. Si une application demande des métadonnées et que vous ne spécifiez pas de nom de schéma, FireDAC utilise implicitement le schéma en cours. Si MetaCurSchema vaut '*', le nom de schéma est omis des paramètres de métadonnées. | * |
GUIDEndian | Définit comment la valeur GUID est représentée sur le client. 'Little' est la valeur par défaut. | Big |
FastFetchMode | Extrait l'objectif d'optimisation des enregistrements :
|
All |
Exemples d'utilisation
- Connexion à un serveur exécuté localement, écoutant sur le port par défaut (5432) :
DriverID=PG Database=addemo
- Connexion à un serveur distant, écoutant sur un port autre que le port par défaut, en utilisant Unicode pour les données des caractères :
DriverID=PG Server=pgsrv Port=5433 Database=addemo CharacterSet=utf8 MetaDefSchema=MySchema ExtendedMetadata=True