Définition d'une connexion (FireDAC)
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).
Sommaire
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 alias BDE, 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 Delphi 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
.
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
.
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 Connection Definitions (EN).
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.Def, FireDAC.Stan.Intf,
// Required uses for creating a persistent connection with MSSQL (to fdconnectiondefs.ini)
FireDAC.Phys.MSSQL,
FireDAC.Phys.MSSQLDef;
const
cNameConnDef = 'MSSQL_Connection';
procedure TForm1.PersistentConnectionClick(Sender: TObject);
var
oDef: IFDStanConnectionDef;
oParams: TFDPhysMSSQLConnectionDefParams; // MSSQL connection params
begin
// Adding new persistent connection to fdconnectiondefs.ini
FDManager.ConnectionDefs.AddConnectionDef;
oDef := FDManager.ConnectionDefs.AddConnectionDef;
oDef.Name := cNameConnDef;
oParams := TFDPhysMSSQLConnectionDefParams(oDef.Params);
oParams.DriverID := 'MSSQL'
oParams.Database := 'Northwind';
oParams.UserName := '.............';
oParams.Password := '.............';
oParams.Server := '127.0.0.1';
oParams.OSAuthent := false;
oParams.MARS := false;
oDef.MarkPersistent;
oDef.Apply;
end;
.....................
procedure TForm1.ConnectionClick(Sender: TObject);
FDConnection1.ConnectionDefName := cNameConnDef;
FDConnection1.Connected := True;
end;
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 une technique similaire à BDE :
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 :
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.
De plus, FDExplorer peut être invoqué au moment de la conception en utilisant le menu déroulant du composant TFDConnection pour explorer le contenu d’une base de données et exécuter des requêtes ad hoc.
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
- Utilitaire FDAdministrator
- Utilitaire FDExplorer
- Connectivité des bases de données FireDAC
- Multi-threading
- Variables relatives au chemin
Exemple
- Exemple FireDAC Connection Definitions
- Exemple FireDAC Create Connection
- Exemple FireDAC InterBase
- Exemple FireDAC MS Access
- Exemple FireDAC MS SQL
- Exemple FireDAC MySQL
- Exemple FireDAC SQLite