Tutorial: Herstellen einer Verbindung zu einer SQLite-Datenbank mit FireDAC
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\22.0\Samples\Data
. Sie hat eine Tabelle namens Employee.
Schritte
- Wählen Sie einen der beiden Befehle:
- Datei > Neu > Geräteübergreifende Anwendung - Delphi
- Datei > Neu > Geräteübergreifende Anwendung - C++Builder
- Fügen Sie dem Formular die folgenden Komponenten hinzu:
- Zwei TButton-Steuerelemente
- Setzen Sie im Objektinspektor die Eigenschaften Name der Schaltflächen auf
executeButton
undconnectButton
und die Eigenschaften Text aufExecute
bzw.Connect
.
- Setzen Sie im Objektinspektor die Eigenschaften Name der Schaltflächen auf
- Eine TFDConnection-Komponente
- Ein TMemo-Steuerelement
- Setzen Sie die Eigenschaft Name auf
outputMemo
.
- Setzen Sie die Eigenschaft Name auf
- Eine TFDPhysSQLiteDriverLink-Komponente für die Verbindung des SQLite-Treibers mit der Anwendung
Setzen Sie die Eigenschaft Enabled von
executeButton
auf False.Jetzt sollte das Formular folgendermaßen aussehen:
- Zwei TButton-Steuerelemente
- 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\22.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; } }
- 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. - Wählen Sie einen der folgenden Befehle aus:
- Start > Start
- Start > Ohne Debugger ausführen
Siehe auch
- TFDPhysSQLiteDriverLink
- TDataSet.Eof
- System.SysUtils.Format
- FireDAC.Comp.Client.TFDConnection
- Unterstützung von SQLite in RAD Studio
- Tutorial: TSQLMonitor-Unterstützung für SQLite-Datenbanken
- Objektinspektor
Beispiele
- FireDAC SQLite (Beispiel)