Définition d'une connexion (FireDAC)

De Appmethod Topics
Aller à : navigation, rechercher

Remonter à Utilisation des connexions (FireDAC)


Explique comment stocker et utiliser les paramètres de connexion FireDAC, ainsi que la signification d'une définition de connexion. Pour spécifier les paramètres de connexion, une application doit utiliser une définition de connexion. La définition de connexion est un ensemble de paramètres. Une connexion peut également être regroupée (mise en pool).

Informations générales

Une définition de connexion est un ensemble de paramètres qui définissent comment connecter une application à un SGBD en utilisant un pilote FireDAC spécifique. C'est l'équivalent d'un UDL ADO (chaîne de connexion OLEDB stockée) ou d'un nom de source de données (DSN) ODBC. Pour connaître la liste des systèmes de gestion de base de données supportés et des paramètres correspondants, voir Connectivité des bases de données FireDAC.

FireDAC supporte trois types de définition de connexion :

Type Description Avantages Inconvénients
Persistante Possède un nom unique, est gérée par FDManager et stockée dans un fichier de définition de connexion. Peut être définie une fois et réutilisée dans de nombreuses applications. Peut être mise en pool. Les paramètres (adresse du serveur, nom de la base de données, etc.) sont publiquement visibles et peuvent être modifiés par inadvertance.

FDManager doit être réactivé ou l'EDI Object Pascal doit être redémarré pour qu'une définition nouvellement ajoutée soit visible à la conception.

Privée Possède un nom unique, est gérée par FDManager, mais n'est PAS stockée dans un fichier de définition de connexion. Les paramètres de la définition de connexion ne sont pas visibles "en dehors" de l'application. Peut être mise en pool. L'application doit créer une définition de connexion privée après chaque redémarrage du programme et ne peut pas la partager avec les autres programmes.

Ne peut pas être créée à la conception.

Temporaire N'a pas de nom, n'est pas stockée dans un fichier de définition de connexion et n'est pas gérée par FDManager. Le moyen le plus simple de créer une définition de connexion consiste à remplir la propriété TFDConnection.Params.

Peut être créée à la conception à l'aide de l'éditeur de composant TFDConnection.

Similaire à la définition de connexion privée. Ne peut pas être référencée par un nom et ne peut pas être mise en pool.

Fichier de définition de connexion

Les définitions de connexions persistantes sont stockées dans un fichier externe : le fichier de définition de connexion. Ce fichier est au format de fichier texte INI standard. Il peut être modifié par les utilitaires FDExplorer ou FDAdministrator (pour commencer), manuellement ou par le code. Par défaut, le fichier est C:\Utilisateurs\Public\Documents\Embarcadero\Studio\FireDAC\FDConnectionDefs.ini.

Remarque : Si vous ajoutez une nouvelle définition de connexion persistante en utilisant FDExplorer ou FDAdministrator alors que l'EDI de Appmethod est en cours d'exécution, la connexion est invisible pour le code FireDAC en mode conception. Pour actualiser la liste des définitions de connexions persistantes, vous devez réactiver FDManager ou redémarrer l'EDI de Appmethod.

Contenu exemple de ce fichier :

[Oracle_Demo]
DriverID=Ora
Database=ORA_920_APP
User_Name=ADDemo
Password=a
MetaDefSchema=ADDemo
;MonitorBy=Remote

[MSSQL_Demo]
DriverID=MSSQL
Server=127.0.0.1
Database=Northwind
User_Name=sa
Password=
MetaDefSchema=dbo
MetaDefCatalog=Northwind
MonitorBy=Remote

Une application peut spécifier un nom de fichier de définition de connexion dans la propriété FDManager.ConnectionDefFileName. FireDAC recherche un fichier de définition de connexion aux endroits suivants :

  • Si ConnectionDefFileName est spécifié :
    • Recherche un nom de fichier sans chemin, puis le cherche dans le dossier EXE d'une application.
    • Sinon, utilise un nom de fichier spécifié.
  • Si ConnectionDefFileName n'est pas spécifié :
    • Recherche FDConnectionDefs.ini dans le dossier EXE d'une application.
    • Si le fichier ci-dessus n'est pas trouvé, recherche un fichier spécifié dans la clé de registre HKCU\Software\Embarcadero\FireDAC\ConnectionDefFile. Par défaut, il s'agit de C:\Utilisateurs\Public\Documents\Embarcadero\Studio\FireDAC\FDConnectionDefs.ini.

Remarque : A la conception, FireDAC ignore la valeur de FDManager.ConnectionDefFileName, puis cherche un fichier dans un dossier Bin Appmethod ou tel que spécifié dans le registre. Si le fichier n'est pas trouvé, une exception est déclenchée.

Si FDManager.ConnectionDefFileAutoLoad a la valeur True, un fichier de définition de connexion se charge automatiquement. Sinon, il doit être chargé explicitement en appelant la méthode FDManager.LoadConnectionDefFile avant la première utilisation des définitions de connexion. Par exemple, avant de définir TFDConnection.Connected sur True.

Création d'une définition de connexion persistante

Une définition de connexion persistante peut être créée à l'aide de FDExplorer ou FDAdministrator. Voici comment vous pouvez faire cela dans le code. Voir également la démo FireDAC\Samples\Comp Layer\TFDConnection\ConnectionDefs.

L'extrait de code suivant crée une définition de connexion nommée "MSSQL_Connection", qui possède tous les paramètres requis pour se connecter à Microsoft SQL Server exécuté localement, en utilisant l'authentification du système d'exploitation (SSPI) :

uses
  FireDAC.Comp.Client, FireDAC.Stan.Intf;
var
  oDef: IFDStanConnectionDef;
begin
  oDef := FDManager.ConnectionDefs.AddConnectionDef;
  oDef.Name := 'MSSQL_Connection';
  oDef.DriverID := 'MSSQL';
  oDef.Server := '127.0.0.1';
  oDef.Database := 'Northwind';
  oDef.OSAuthent := True;
  oDef.MarkPersistent;
  oDef.Apply;
  .....................
  FDConnection1.ConnectionDefName := 'MSSQL_Connection';
  FDConnection1.Connected := True;

FDManager est une instance globale du gestionnaire de connexion FireDAC. Sa propriété FDManager.ConnectionDefs : IFDStanConnectionDefs est une collection de définitions de connexions persistantes et privées. La méthode AddConnectionDef ajoute une nouvelle définition de connexion. La méthode MarkPersistent marque une définition de connexion comme persistante. La méthode Apply enregistre une définition de connexion dans un fichier de définition de connexion. Sans l'appel MarkPersistent, la définition de connexion est privée.

Création d'une définition de connexion privée

Une définition de connexion privée peut uniquement être créée dans le code. Le code est similaire à celui ci-dessus, mais sans l'appel MarkPersistent.

Vous pouvez également utiliser la technique alternative suivante :

var
  oParams: TStrings;
begin
  oParams := TStringList.Create;
  oParams.Add('Server=127.0.0.1');
  oParams.Add('Database=Northwind');
  oParams.Add('OSAuthent=Yes');
  FDManager.AddConnectionDef('MSSQL_Connection', 'MSSQL', oParams);
  .....................
  FDConnection1.ConnectionDefName := 'MSSQL_Connection';
  FDConnection1.Connected := True;

Création d'une définition de connexion temporaire

A la conception

Une définition de connexion temporaire peut être créée à la conception à l'aide de l'éditeur de connexion FireDAC. Pour ce faire, double-cliquez sur un composant TFDConnection pour appeler l'éditeur :

Defining.png

Ou en cliquant sur l'icône TFDConnection en mode Conception et en sélectionnant le pilote dans la propriété DriverName de l'inspecteur d'objets. Développez ensuite la propriété Params et configurez les propriétés requises. La dernière étape consiste à définir la propriété Connected sur True.

A l'exécution

Pour créer une connexion temporaire, à l'exécution dans le code, remplissez la propriété TFDConnection.Params. C'est le moyen le plus simple et le plus pratique de créer une définition de connexion.

FDConnection1.DriverName := 'MSSQL';
FDConnection1.Params.Add('Server=127.0.0.1');
FDConnection1.Params.Add('Database=Northwind');
FDConnection1.Params.Add('User_name=sa');
FDConnection1.Connected := True;

Une autre façon de créer une définition de connexion temporaire à l'exécution consiste à transtyper la propriété TFDConnection.Params en une classe spécifique SGBD. C'est le moyen le plus fiable pour créer une définition de connexion, car l'audit de code de l'EDI et la vérification syntaxique du compilateur peuvent être utilisés pour contrôler la justesse.

uses
  FireDAC.Phys.IBDef, FireDAC.Phys.IBWrapper;
......
FDConnection1.DriverName := 'IB';
with FDConnection1.Params as TFDPhysIBConnectionDefParams do begin
  Protocol := ipTCPIP;
  Server := '127.0.0.1';
  Database := 'c:\IB\employee.gdb';
  UserName := 'sysdba';
  Password := 'masterkey';
end;
FDConnection1.Connected := True;

Une autre option consiste à spécifier une chaîne de connexion à l'exécution en remplissant la propriété TFDConnection.ConnectionString. Une chaîne de connexion peut être un moyen pratique de spécifier les paramètres d'une définition de connexion pour certains types d'applications. Par exemple :

FDConnection1.ConnectionString := 'DriverID=MSSQL;Server=127.0.0.1;Database=Northwind;User_name=sa';
FDConnection1.Connected := True;

Modification d'une définition de connexion

Une application peut avoir besoin de créer et de modifier une définition de connexion à l'exécution à l'aide de la boîte de dialogue Editeur de connexion FireDAC standard. Pour modifier une définition de connexion temporaire stockée dans TFDConnection, utilisez le code :

uses
  FireDAC.VCLUI.ConnEdit;
...
if TfrmFDGUIxFormsConnEdit.Execute(FDConnection1, '') then
  FDConnection1.Connected := True;

Pour modifier une définition de connexion représentée sous forme de chaîne de connexion FireDAC, utilisez le code :

uses
  FireDAC.VCLUI.ConnEdit;
...
var
  sConnStr: String;
...
sConnStr := FDConnection1.ResultConnectionDef.BuildString();
if TfrmFDGUIxFormsConnEdit.Execute(sConnStr, '') then begin
  FDConnection1.ResultConnectionDef.ParseString(sConnStr);
  FDConnection1.Connected := True;
end;

Voir aussi