Tutorial: Herstellen einer Verbindung zu einer SQLite-Datenbank mit FireDAC

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Tutorials zu Datenbanken und LiveBindings


In diesem Tutorial wird mit einer einfachen geräteübergreifenden Delphi-Anwendung gezeigt, wie eine Verbindung mit einer SQLite-Datenbank hergestellt und eine einfache Abfrage ausgeführt wird.

Die in diesem Beispiel verwendete Datenbank "Employees.s3db" befindet sich hier C:\Users\Public\Documents\Embarcadero\Studio\20.0\Samples\Data. Sie hat eine Tabelle namens Employee.

Schritte

  1. Wählen Sie einen der beiden Befehle:
  2. Fügen Sie dem Formular die folgenden Komponenten hinzu:
    1. Zwei TButton-Steuerelemente
      • Setzen Sie im Objektinspektor die Eigenschaften Name der Schaltflächen auf executeButton und connectButton und die Eigenschaften Text auf Execute bzw. Connect.
    2. Setzen Sie die Eigenschaft Enabled von executeButton auf False.

    3. Eine TFDConnection-Komponente
    4. Ein TMemo-Steuerelement
      • Setzen Sie die Eigenschaft Name auf outputMemo.
    5. Eine TFDPhysSQLiteDriverLink-Komponente für die Verbindung des SQLite-Treibers mit der Anwendung

    Jetzt sollte das Formular folgendermaßen aussehen:

    Design.png
  3. Fügen Sie der OnClick-Ereignisbehandlungsroutine von connectButton den folgenden Code hinzu.
    • In Delphi:
    procedure TForm3.connectButtonClick(Sender: TObject);
    begin
      outputMemo.Text := '';''
      // Den Pfad auf die Datenbankdatei setzen.
      // 'C:\Users\Public\Documents\...\Employees.s3db ' durch den absoluten Pfad  
      // zu der SQLite-Datenbankdatei ersetzen.
      FDConnection1.DriverName := 'SQLITE';
      FDConnection1.Params.Values['Database'] :=
        'C:\Users\Public\Documents\Embarcadero\Studio\20.0\Samples\Data\Employees.s3db';
      try
        // Die Verbindung herstellen.
        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;
    
    • In C++Builder:
    void __fastcall TForm1::connectButtonClick(TObject *Sender) {
      outputMemo->Text = "";
      // Den Pfad auf die Datenbankdatei setzen.
      // 'C:\Users\Public\Documents\...\Employees.s3db ' durch den absoluten Pfad  
      // zu der SQLite-Datenbankdatei ersetzen.
      FDConnection1->DriverName = "SQLite";
      FDConnection1->Params->Values["DataBase"] = "C:\\Users\\Public\\Documents\\Embarcadero\\Studio\\14.0\\Samples\\Data\\Employees.s3db";
      try {
        // Die Verbindung herstellen.
        FDConnection1->Open();
        executeButton->Enabled = true;
        outputMemo->Lines->Add("Connection established!");
      }
      catch (Exception& E) {
        outputMemo->Text = "Exception raised with message" + E.Message;
      }
    
    }
    
  4. Fügen Sie der OnClick-Ereignisbehandlungsroutine von executeButton den folgenden Code hinzu.
    • In Delphi:
    procedure TForm1.executeButtonClick(Sender: TObject);
    var
      query: TFDQuery;
    begin
    
      query := TFDQuery.Create(nil);
      
      try
        // Die SQL-Abfrage festlegen
        query.Connection := FDConnection1;
        query.SQL.Text := 'SELECT * FROM Employee';
        query.Open();
        outputMemo.Text := '';''
        // Die Feldnamen aus der Tabelle hinzufügen.
        outputMemo.Lines.Add(String.Format('|%8s|%25s|%25s|', [' ID ', ' NAME ',
          ' DEPARTMENT ']));
        // Dem Memo eine Zeile pro Datensatz in der Tabelle hinzufügen.   
        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;
    

    Hinweis: Sie müssen die Unit FireDAC.DApt hinzufügen.

    • In C++Builder:
    void __fastcall TForm1::executeButtonClick(TObject *Sender) {
      TFDQuery *query;
      query = new TFDQuery(NULL);
    
      __try {
        query->Connection = FDConnection1;
        // Die SQL-Abfrage festlegen
        query->SQL->Text = "SELECT * FROM Employee";
        query->Open();
        outputMemo->Text = "";
        // Die Feldnamen aus der Tabelle hinzufügen.
        TVarRec args[3] = {"ID", "NAME", "DEPARTMENT"};
        outputMemo->Lines->Add(System::UnicodeString::Format("|%8s |%25s |%25s |", args, ARRAYSIZE(args) - 1));
        // Dem Memo eine Zeile pro Datensatz in der Tabelle hinzufügen.   
        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();
      }
    
    }
    

    Hinweis:

    Sie müssen #include <FireDAC.DApt.hpp> hinzufügen.
  5. Wählen Sie einen der folgenden Befehle aus:
    • Start > Start
    • Start > Ohne Debugger ausführen
    Runtime.png

Siehe auch

Beispiele