Tutoriel : Connexion à une base de données SQLite en utilisant FireDAC

De RAD Studio
Aller à : navigation, rechercher

Remonter à Tutoriels Bases de données et LiveBindings


Ce tutoriel est une application multi-périphérique Delphi simple qui montre comment établir une connexion à une base de données SQLite et exécuter une requête simple.

La base de données utilisée dans cet exemple est située dans C:\Utilisateurs\Public\Documents\Embarcadero\Studio\20.0\Samples\Data\Employees.s3db et comporte une table nommée Employee.

Etapes

  1. Sélectionnez l'une des options suivantes :
  2. Ajoutez les composants suivants à la fiche :
    1. Deux contrôles TButton ;
      • Depuis l'inspecteur d'objets, définissez les propriétés Name des boutons sur executeButton et connectButton, puis leurs propriétés Text sur Execute et Connect, respectivement.
    2. Définissez la propriété Enabled de executeButton sur False.

    3. Un composant TFDConnection ;
    4. Un contrôle TMemo ;
      • Définissez la propriété Name sur outputMemo.
    5. Un composant TFDPhysSQLiteDriverLink, pour établir la liaison entre le pilote SQLite et l'application.

    A ce stade, la fiche devrait ressembler à ceci :

    Design.png
  3. Ajoutez le code suivant au gestionnaire d'événement OnClick du connectButton :
    • Dans Delphi :
    procedure TForm3.connectButtonClick(Sender: TObject);
    begin
      outputMemo.Text := '';''
      // Set the path of your database file.
      // Replace 'C:\Users\Public\Documents\...\Employees.s3db ' with the absolute path 
      // to your SQLite database file.
      FDConnection1.DriverName := 'SQLITE';
      FDConnection1.Params.Values['Database'] :=
        'C:\Utilisateurs\Public\Documents\Embarcadero\Studio\20.0\Samples\Data\Employees.s3db';
      try
        // Establish the connection.
        FDConnection1.Open;
        executeButton.Enabled := True;
        outputMemo.Lines.Add('Connection established!');
      except
        on E: EDatabaseError do
          outputMemo.Lines.Add('Exception raised with message' + E.Message);
      end;
    end;
    
    • Dans C++Builder :
    void __fastcall TForm1::connectButtonClick(TObject *Sender) {
      outputMemo->Text = "";
      // Set the path of your database file.
      // Replace 'C:\Users\Public\Documents\...\Employees.s3db ' with the absolute path 
      // to your SQLite database file.
      FDConnection1->DriverName = "SQLite";
      FDConnection1->Params->Values["DataBase"] = "C:\\Users\\Public\\Documents\\Embarcadero\\Studio\\14.0\\Samples\\Data\\Employees.s3db";
      try {
        // Establish the connection.
        FDConnection1->Open();
        executeButton->Enabled = true;
        outputMemo->Lines->Add("Connection established!");
      }
      catch (Exception& E) {
        outputMemo->Text = "Exception raised with message" + E.Message;
      }
    
    }
    
  4. Ajoutez le code suivant au gestionnaire d'événement OnClick de executeButton.
    • Dans Delphi :
    procedure TForm1.executeButtonClick(Sender: TObject);
    var
      query: TFDQuery;
    begin
    
      query := TFDQuery.Create(nil);
      
      try
        // Define the SQL Query
        query.Connection := FDConnection1;
        query.SQL.Text := 'SELECT * FROM Employee';
        query.Open();
        outputMemo.Text := '';''
        // Ajouter les noms de champ à partir de la table.
        outputMemo.Lines.Add(String.Format('|%8s|%25s|%25s|', [' ID ', ' NAME ',
          ' DEPARTMENT ']));
        // Ajouter une ligne au mémo pour chaque enregistrement de la table.   
        while not query.Eof do
        begin
          outputMemo.Lines.Add(String.Format('|%8d|%-25s|%-25s|',
            [query.FieldByName('ID').AsInteger, query.FieldByName('Name').AsString,
            query.FieldByName('Department').AsString]));
          query.Next;
        end;
    
      finally
        query.Close;
        query.DisposeOf;
      end;
    
    end;
    

    Remarque : Vous devez ajouter l'unité FireDAC.DApt.

    • Dans C++Builder :
    void __fastcall TForm1::executeButtonClick(TObject *Sender) {
      TFDQuery *query;
      query = new TFDQuery(NULL);
    
      __try {
        query->Connection = FDConnection1;
        // Define the SQL Query
        query->SQL->Text = "SELECT * FROM Employee";
        query->Open();
        outputMemo->Text = "";
        // Add the field names from the table.
        TVarRec args[3] = {"ID", "NAME", "DEPARTMENT"};
        outputMemo->Lines->Add(System::UnicodeString::Format("|%8s |%25s |%25s |", args, ARRAYSIZE(args) - 1));
        // Add one line to the memo for each record in the table.   
        while (!query->Eof) {
          TVarRec arguments[3] = {query->FieldByName("ID")->AsInteger, query->FieldByName("Name")->AsString, query->FieldByName("Department")->AsString};
          outputMemo->Lines->Add(System::UnicodeString::Format("|%8d |%-25s |%-25s |", arguments, ARRAYSIZE(arguments) - 1));
          query->Next();
        }
      }
      __finally {
        query->Close();
        query->DisposeOf();
      }
    
    }
    

    Remarque : Vous devez ajouter #include <FireDAC.DApt.hpp>.

  5. Choisissez l'une des commandes suivantes :
    • Exécuter > Exécuter
    • Exécuter > Exécuter sans déboguer
    Runtime.png

Voir aussi

Exemples