Configuration des pilotes (FireDAC)

De Appmethod Topics
Aller à : navigation, rechercher

Remonter à Utilisation des connexions (FireDAC)


Explique comment configurer les pilotes de SGBD de FireDAC, notamment comment spécifier une bibliothèque client SGBD. Pour lier un pilote FireDAC à une application, spécifiez le client DBMS pour le pilote et d'autres paramètres facultatifs. Une application peut utiliser les composants TFDPhysXxxDriverLink et/ou un fichier de configuration externe.

Informations générales

Pour ajuster le comportement d'un pilote, vous pouvez utiliser un fichier de configuration de pilote ou les composants TFDPhysXxxDriverLink. La plupart des informations fournies concernant le fichier de configuration du pilote s'appliquent aussi en grande partie aux composants TFDPhysXxxDriverLink.

Fichier de configuration du pilote

Un fichier de configuration de pilote est un fichier texte INI standard. Il peut uniquement être édité manuellement. Le fichier de configuration du pilote vous permet essentiellement d'effectuer les actions suivantes :

  • Ajuster les paramètres d'un pilote de base (nom de section = ID du pilote de base).
  • Introduire un nouveau pilote virtuel, qui est un ensemble des paramètres du pilote de base enregistré sous un nouveau nom (nom de section = ID du nouveau pilote virtuel).

FireDAC recherche le fichier de configuration de pilote aux endroits suivants :

  • FDDrivers.ini dans le dossier EXE de l'application.
  • Si le fichier ci-dessus n'est pas trouvé, le programme recherche le fichier spécifié dans la clé de registre HKCU\Software\Embarcadero\FireDAC\DriverFile. Par défaut, il s'agit de C:\Utilisateurs\Public\Documents\Embarcadero\Studio\FireDAC\FDDrivers.ini.

A la conception, FireDAC utilise le fichier situé dans le dossier Bin de Appmethod ou le fichier spécifié dans le registre.

Pilotes de base et pilotes virtuels

Si le nom de section dans le fichier de configuration du pilote est l'ID du pilote de base (par exemple, "ASA" ou "Ora"), le pilote de base utilise les valeurs de paramètres spécifiées dans la section correspondante.

Si le nom de section n'est pas l'ID d'un des pilotes de base (par exemple, "Ora815" ou "MySQL510_Embedded"), FireDAC enregistre un nouveau pilote virtuel. Le pilote virtuel utilise l'implémentation du pilote de base spécifié par le paramètre BaseDriverID et les valeurs de paramètres spécifiées. L'ID d'un pilote virtuel peut ensuite être utilisé comme valeur du paramètre de définition de connexion DriverID. Un pilote virtuel permet à l'application d'effectuer les opérations suivantes :

  • Utiliser différentes versions du logiciel client du SGBD dans différentes connexions, établies dans la même session de l'application, par exemple pour se connecter à InterBase et Firebird.
  • Choisir une version explicite du logiciel client du SGBD, par exemple pour utiliser l'une des nombreuses bibliothèques LIBMYSQL.DLL installées sur la station de travail.
  • Configurer des pilotes qui requièrent la spécification de paramètres, par exemple le serveur MySQL Embarqué.

Paramètres de configuration du pilote

Vous pouvez définir les paramètres suivants :

Paramètre Description Appliqué aux pilotes
VendorHome[ | Win32 | Win64 | MacOS32 | MacOS64 | UIX32 | UIX64] Nom Oracle Home. Ora
Chemin d'installation de base. Par exemple : C:\ib\ib2007. IB
Chemin d'installation de base pour un serveur normal. Par exemple : C:\MySQL\MySQL5-1-7. Ou chemin menant à la bibliothèque LIBMYSQLD.DLL pour un serveur embarqué. Par exemple C:\MyAPP\MySQL. MySQL
VendorLib[ | Win32 | Win64 | MacOS32 | MacOS64 | UIX32 | UIX64] Nom de la DLL de l'API du logiciel client du SGBD. Par exemple : libmysql510.dll.
  • Ora
  • IB/FB
  • MySQL
ODBCDriver Nom du pilote ODBC. Par exemple : Adaptive Server Anywhere 8.0. Tous les pilotes basés sur ODBC
ODBCAdvanced Paramètres supplémentaires du pilote ODBC.

La chaîne se compose des paramètres du pilote ODBC séparés par  ?;?. Consultez la documentation de l'éditeur pour connaître les valeurs possibles.

Tous les pilotes basés sur ODBC
EmbeddedArgs Arguments du serveur embarqué MySQL.

La chaîne se compose des arguments du serveur MySQL séparés par ?;?. Consultez la documentation de l'éditeur pour connaître les valeurs possibles. Par exemple : --datadir=./data;--language=./;--skip-innodb.

MySQL
EmbeddedGroups Groupes de fichiers de configuration du serveur embarqué MySQL. MySQL
NLSLang Valeur de la variable d'environnement Oracle NLS_LANG. Ora
TNSAdmin Valeur de la variable d'environnement Oracle TNS_ADMIN. Ora

Pour les pilotes non basés sur ODBC, si le paramètre VendorLib est spécifié, FireDAC utilise la DLL spécifiée. Si le paramètre VendorHome est spécifié, la DLL portant le nom par défaut dans le sous-dossier Bin est utilisée. S'il n'est pas spécifié, une DLL avec un nom par défaut provenant de :

  • l'Oracle Home primaire du pilote Ora,
  • ou du dossier le plus à gauche dans la variable d'environnement PATH, contenant la DLL, des autres pilotes

est utilisée. Vous pouvez également spécifier un suffixe désignant une plate-forme.

Pour les pilotes basés sur ODBC, si le paramètre ODBCDriver est spécifié, FireDAC utilise le pilote spécifié. S'il n'est pas spécifié, un nom de pilote par défaut est utilisé.

Contenu exemple de fichier de configuration d'un pilote

[ASA]
; ASA base driver will use specified ODBC driver
ODBCDriver=Adaptive Server Anywhere 8.0

[Ora815]
; Ora815 virtual driver will use specified Oracle Home
BaseDriverID=Ora
VendorHomeWin32=OraHome815
VendorHomeWin64=OraHome815_64

[MySQL327]
; MySQL327 virtual driver will use specified LIBMYSQL.DLL
BaseDriverID=MySQL
VendorLib=c:\LIBMYSQL327.DLL

[MySQL510_Embedded]
; MySQL510_Embedded virtual driver will use specified MySQL embedded library and arguments
BaseDriverID=MySQL
VendorLib=c:\LIBMYSQLD.DLL
EmbeddedArgs=--datadir=./data;--language=./;--skip-innodb;--skip-networking

[MSSQL_2000]
; MSSQL_2000 virtual driver will use specified ODBC driver
BaseDriverID=MSSQL
ODBCDriver=SQL SERVER
ODBCAdvanced=

[FB21]
; FB21 virtual driver will use specified Firebird client library
BaseDriverID=FB
VendorLibWin32=C:\ib\fb21\bin\fbclient.dll
VendorLibWin64=C:\ib\fb21_64\bin\fbclient.dll

[FB21_Embedded]
; FB21_Embedded virtual driver will use specified Firebird client library
BaseDriverID=FB
VendorLib=C:\ib\fb21_embed\bin\fbembed.dll


Configuration des pilotes dans le code

Vous pouvez également configurer les pilotes FireDAC dans le code de l'application à l'exécution. Pour ce faire, déposez le composant TFDPhysXXXDriverLink approprié sur votre fiche. Il possède les mêmes propriétés nommées que les paramètres du fichier de configuration de pilote. Les propriétés du composant de liaison doivent être définies avant l'ouverture d'une première connexion à un SGBD par le biais de ce pilote. L'exemple de code suivant montre comment configurer le pilote Firebird à l'exécution :

interface

uses
  ..., FireDAC.Phys.FB;

type
  TForm1 = class(TForm)
  ......
    FDPhysFBDriverLink1: TFDPhysFBDriverLink;
    FDConnection1: TFDConnection;
    procedure FormCreate(Sender: TObject);
  ......
  end;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  FDPhysFBDriverLink1.VendorLib := 'C:\ib\fb21_embed\bin\fbembed.dll';

  FDConnection1.ConnectionDefName := 'FB_Demo';
  FDConnection1.Connected := True;
end;

Quand une connexion utilisant un pilote a été établie alors qu'une application doit basculer sur un autre client SGBD :

  • fermez toutes les connexions sur ce pilote.
  • appelez la méthode Release de liaison du pilote.
  • changez les propriétés de liaison requises.

La connexion suivante avec ce pilote utilise les nouvelles propriétés de liaison. L'exemple de code suivant montre comment changer la configuration du pilote Firebird à l'exécution :

FDConnection1.Close;
FDPhysFBDriverLink1.Release;
FDPhysFBDriverLink1.VendorLib := 'C:\fbclient.dll';
FDConnection1.Open;

Remarque : Même s'il est possible d'utiliser des composants de liaison pour configurer des pilotes à la conception, nous ne le recommandons pas, car il est difficile de charger un module avec un composant de liaison avant le chargement de tout autre module avec les composants FireDAC. Par conséquent, le composant de liaison configure le pilote correctement.

Voir aussi