Etablissement d'une connexion (FireDAC)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Utilisation des connexions (FireDAC)


Décrit comment ouvrir ou fermer une connexion à un SGBD en utilisant FireDAC. FireDAC fournit le composant TFDConnection pour vous aider à ouvrir une connexion à une base de données.

Informations générales

Quand une définition de connexion a été créée, la connexion à une base de données peut être établie. Il existe en général deux façons de procéder :

FireDAC fournit plusieurs méthodes TFDCustomConnection.Open en supplément de la propriété Connected. Ces méthodes vous permettent d'utiliser une chaîne de connexion FireDAC, c'est-à-dire une chaîne au format param=value[;...param=value]. Par exemple :

FDConnection1.Open('DriverID=SQLite;Database=c:\test.sdb;Password=12345');

L'événement BeforeConnect est déclenché avant l'ouverture de la connexion. Une fois la connexion établie, l'événement AfterConnect est déclenché.

Gestion des erreurs de connexion

Si l'établissement de la connexion échoue, une application peut analyser l'échec à l'aide de l'une des approches suivantes :

  • en utilisant le gestionnaire d'événément TFDCustomConnection.OnError. Cette approche est plus appropriée lorsqu'une connexion est ouverte implicitement.
  • en utilisant la syntaxe try ... except ... end. Il s'agit de la meilleure approche lorsqu'une connexion est établie explicitement. Par exemple :
uses
  FireDAC.Stan.Consts, FireDAC.Stan.Error;
...
try
  FDConnection1.Connected := True;
except
  on E: EFDException do
    if E.FDCode = er_FD_ClntDbLoginAborted then
      ; // user pressed Cancel button in Login dialog
  on E: EFDDBEngineException do
    case E.Kind of
    ekUserPwdInvalid: ; // user name or password are incorrect
    ekUserPwdExpired: ; // user password is expired
    ekServerGone: ;     // DBMS is not accessible due to some reason
    else                // other issues
    end;
end;

Remarque : La boîte de dialogue de connexion gère automatiquement le type d'erreur ekUserPwdInvalid, en suggérant à l'utilisateur de saisir à nouveau les informations d'identification de la connexion. Pour désactiver ce paramètre, définissez TFDGUIxLoginDialog.LoginRetries sur -1. L'erreur ekUserPwdExpired est également gérée automatiquement en suggérant à l'utilisateur de saisir à nouveau le mot de passe.

En outre, si la récupération de la connexion est configurée, le type d'erreur ekServerGone amène une connexion dans un état hors ligne. Sinon, la méthode TFDCustomConnection.Ping peut être utilisée pour éviter l'erreur ekServerGone et rendre la connexion active, si un SGBD est disponible.

Pour plus de détails, voir "Gestion des erreurs".

Utilisation de la boîte de dialogue de connexion

L'application GUI peut utiliser le composant TFDGUIxLoginDialog pour permettre aux utilisateurs finaux de saisir les informations d'identification de la base de données. La boîte de dialogue de connexion peut être liée selon l'une des méthodes suivantes :

  • Déposez le composant TFDGUIxLoginDialog sur une fiche. Aucune configuration supplémentaire n'est requise. Cette boîte de dialogue servira de boîte de dialogue de connexion par défaut pour une application.
  • Déposez le composant TFDGUIxLoginDialog sur une fiche et définissez TFDCustomConnection.LoginDialog dans cette boîte de dialogue. La boîte de dialogue fera l'objet d'une utilisation privée par cette connexion.

La boîte de dialogue de connexion est automatiquement invoquée par TFDCustomConnection, quand LoginPrompt = True :

FireDACLoginFDDemo.png

Utilisez la propriété TFDGUIxLoginDialog.VisibleItems pour spécifier les paramètres de définition de connexion à montrer à l'utilisateur final et comment les nommer. La dernière option vous permet de localiser la boîte de dialogue de connexion. Par exemple, les développeurs SQL Server germanophones peuvent spécifier :

with FDGUIxLoginDialog1.VisibleItems do begin
  Clear;
  Add('Server');
  Add('User_name=Benutzer');
  Add('Password=Kennwort');
  Add('OSAuthent');
end;
FDConnection1.LoginDialog := FDGUIxLoginDialog1;
FDConnection1.Connected := True;

Quand un SGBD prend en charge l'expiration de mot de passe, que le mot de passe a expiré et que TFDGUIxLoginDialog.ChangeExpiredPassword a la valeur True, la boîte de dialogue demande un nouveau mot de passe.

Fermeture d'une connexion

La connexion peut être fermée selon l'une des méthodes suivantes :

FireDAC termine les transactions actives, le cas échéant, avant la fermeture de la connexion. Utilisez TxOptions.DisconnectAction pour contrôler l'action réalisée.

L'événement TFDCustomConnection.BeforeDisconnect est également déclenché avant la fermeture. Une fois la connexion fermée, l'événement AfterDisconnect est déclenché.

Voir aussi