Mobile-Tutorial: Verwenden von FireDAC in mobilen Anwendungen (iOS und Android)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Mobile-Tutorials: Mobile Anwendungsentwicklung (iOS und Android)

In diesem Tutorial werden die grundlegenden Schritte zum Verwenden von SQLite als lokalen Datenspeicher auf Ihrem mobilen Gerät mit dem FireDAC-Framework beschrieben.

iOS Android

IPodRunTime.png

AndroidTRunTime.png

Herstellen einer Verbindung zu der Datenbank mit FireDAC

FireDAC ist ein einzigartiger Satz von Universellen Datenzugriffs-Komponenten zur Entwicklung von geräteübergreifenden Datenbankanwendungen für Delphi und C++Builder. Durch seine leistungsstarke allgemeine Architektur ermöglicht FireDAC von Delphi aus einen nativen, extrem schnellen, direkten Zugriff auf InterBase, SQLite, MySQL, SQL Server, Oracle, PostgreSQL, IBM DB2, SQL Anywhere, Access, Firebird, Informix und weitere.

Der native FireDAC-Treiber unterstützt SQLite-Datenbanken der Version 3.0 und höher. Eine detaillierte Erläuterung der Verwendung von SQLite in FireDAC für Delphi-Anwendungen finden Sie unter Verwenden von SQLite mit FireDAC.

Damit Sie SQLite in Ihrer Anwendung verwenden können, muss die Datei sqlite3.dll auf Ihrem Entwicklungssystem vorhanden sein. Falls dies nicht der Fall ist, laden Sie sqlite3.dll von http://www.sqlite.org/download.html in den Systempfad (wie z. B. C:\Windows\SysWOW64 für 32-Bit-Apps unter 64-Bit-Windows) herunter.

Entwerfen und Einrichten der Benutzeroberfläche

Erstellen Sie ein neues Projekt. Wählen Sie eine Geräteübergreifende Anwendung aus.

  1. Legen Sie eine TFDConnection-Komponente auf dem Formular ab.
  2. Klicken Sie mit der rechten Maustaste auf die TFDConnection-Komponente, und wählen Sie Verbindungseditor aus.
  3. Legen Sie im FireDAC-Verbindungseditor die folgenden Parameter der TFDConnection-Komponente fest:
    1. Legen Sie die Eigenschaft Treiber-ID auf SQLite fest.
    2. Legen Sie den Parameter Database auf:
      C:\Users\Public\Documents\Embarcadero\Studio\22.0\Samples\Data\Employees.s3db (Speicherort der Datenbank) fest
      und klicken Sie im Dialogfeld "Datei öffnen" auf Öffnen.
      (Damit die Datei Employees.s3db im Dialogfeld "Datei öffnen" angezeigt wird, wählen Sie die Option Alle Dateien (*.*) aus.)
      ConnectionEdtFD.png

    3. Klicken Sie auf die Schaltfläche Testen, um die Verbindung zu testen.
      TestConnectionSuccess.png

    4. Klicken Sie auf OK, um den Verbindungseditor zu schließen.
  4. Legen Sie im Objektinspektor die folgenden Eigenschaften von TFDConnection fest:
    1. Legen Sie die Eigenschaft LoginPrompt auf False fest, damit der Benutzer nicht zur Eingabe von Anmeldedaten aufgefordert wird.
    2. Legen Sie die Eigenschaft Connected auf True fest.

Verwenden des LiveBindings-Experten

Fügen Sie mit dem LiveBindings-Experten die LiveBindings-Komponenten (TBindSourceDB, TBindingsList), TFDQuery und die Komponente TListView hinzu.

Hinzufügen der LiveBinding-Komponenten

  1. Wählen Sie Ansicht > LiveBindings-Designer aus und der LiveBindings-Designer wird geöffnet.
  2. Wählen Sie LiveBindings-Experte aus.
    SelectLiveBindWizard.png

  3. Wählen Sie die Bindungsaufgabe Datenquelle erstellen aus.
  4. Klicken Sie auf die Schaltfläche Weiter.
  5. Wählen Sie den Klassennamen FireDAC aus.
  6. Klicken Sie auf die Schaltfläche Weiter.
  7. Ändern Sie den Befehlstyp in Abfrage.
  8. Legen Sie die Eigenschaft Befehlstext auf select Name, Department, Seniority from Employee order by Department fest.
    LiveBindWizardFD.png

  9. Klicken Sie auf die Schaltfläche Befehl testen.
  10. Klicken Sie auf die Schaltfläche Weiter.
  11. Klicken Sie auf die Schaltfläche Fertig stellen.

Damit wurden dem Formular die Komponenten TBindSourceDB und TFDQuery hinzugefügt.

Hinzufügen der ListView-Komponente

  1. Öffnen Sie den LiveBindings-Experten erneut.
  2. Wählen Sie die Bindungsaufgabe Steuerelement mit einem Feld verknüpfen aus.
    ControlFieldWizard.png

  3. Klicken Sie auf die Schaltfläche Weiter.
  4. Wählen Sie TListView aus.
  5. Klicken Sie auf die Schaltfläche Weiter.
  6. Wählen Sie BindSourceDB1 aus.
  7. Klicken Sie auf die Schaltfläche Weiter.
  8. Wählen Sie den Feldnamen Name aus.
    FieldNameWizard.png

  9. Klicken Sie auf die Schaltfläche Weiter.
  10. Klicken Sie auf die Schaltfläche Fertig stellen, um den Experten zu schließen.

Verwenden des LiveBindings-Experten

LiveBindings-Designer

Fügen Sie mit dem LiveBindings-Designer neue Verbindungen zwischen den Komponenten TBindSourceDB und TListView hinzu.

  1. Wählen Sie den Member ItemHeader.Text von TListView aus.
  2. Stellen Sie durch Ziehen eine Verbindung zum Member Department der BindSourceDB1-Komponente her (eine Verbindungslinie erscheint).
  3. Wählen Sie den Member Item.Text von TListView aus.
  4. Stellen Sie durch Ziehen eine Verbindung zum Member Name der BindSourceDB1-Komponente her (eine Verbindungslinie erscheint).
  5. Legen Sie im Objektinspektor die folgenden Eigenschaften von TListView fest:
    1. Legen Sie ItemAppearance auf ImageListItemRightButton fest.
      Im LiveBindings-Designer sollte für die TListView-Komponente der neue Member Item.ButtonText angezeigt werden.
    2. Legen Sie die Eigenschaft Align auf Client fest.
  6. Wählen Sie im LiveBindings-Designer den Member Item.ButtonText von TListView aus.
  7. Binden Sie den Member durch Ziehen an den Member Seniority der BindSourceDB1-Komponente (eine Verbindungslinie erscheint).

Vorbereiten der Anwendung für die Ausführung

FireDAC verfügt über eine lose verbundene mehrschichtige Architektur, in der Dienste von Schichten bereitgestellt werden. Eine Dienst-API ist als COM-Interface definiert, das von anderen Schichten über den Interface-Generator angefordert werden kann.

Für die ordnungsgemäße Ausführung von FireDAC müssen Sie die Implementierung der Interfaces IFDGUIxWaitCursor und IFDPhysDriver in Ihre Anwendung einbinden.

Ziehen Sie hierzu die Komponenten TFDGUIxWaitCursor und TFDPhysSQLiteDriverLink auf das Formular.

Einrichten der Datenbankbereitstellung für mobile Geräte

Bis jetzt haben Sie SQLite auf dem Desktop verwendet. Das bedeutet, dass sich die eigentliche Datenbank auf Ihrer lokalen Festplatte (z. B. C:\Users\Public\Documents\Embarcadero\Studio\22.0\Samples\Data\Employees.s3db) befindet. Auf mobilen Geräten befinden sich Anwendungen in einer Sandbox, und in der Regel können Sie Daten nur lesen und schreiben, die sich im Ordner Documents (iOS-Geräte) oder im internen Speicher (Android-Geräte) unter dem Anwendungsordner befinden.

Führen Sie die folgenden Schritte aus, um eine Verbindung zu einer lokalen Datenbank auf einem mobilen Gerät herzustellen:

  • Stellen Sie die Datenbank auf dem mobilen Gerät bereit.
  • Ändern Sie die Konfiguration (für die Verbindung mit der Datenbankdatei) im Documents-Ordner (für iOS-Geräte) oder im internal-Speicher (Android-Geräte) in eine lokale Datei.

Hinzufügen und Konfigurieren der Datenbankdatei im Bereitstellungs-Manager

Bevor Sie Ihre Anwendung auf einem mobilen Gerät ausführen können, müssen Sie die Bereitstellung für Ihre Datenbankdatei (Employees.s3db) einrichten.

  1. Öffnen Sie den Bereitstellungs-Manager durch Auswahl von Projekt > Bereitstellung.
  2. Wählen Sie Dateien hinzufügen und dann die Datenbankdatei (z. B. C:\Users\Public\Documents\Embarcadero\Studio\22.0\Samples\Data\Employees.s3db) aus.
    AddingDatabaseFile.png

  3. Wählen Sie Employees.s3db aus, und ändern Sie den Remote-Pfad in StartUp\Documents\ (iOS-Plattform) oder in assets\internal\ (Android-Plattform).
    Remote-Pfad auf der iOS-Geräteplattform
    Deployment ios64.png

    Remote-Pfad auf der Android-Plattform
    AndroidRemotePathAssets.png

  4. Wählen Sie die Spalte Plattformen aus (doppelklicken Sie auf die Ellipsen-Schaltfläche [...] in der Zeile für Employees.s3db):
    1. Vergewissern Sie sich, dass iOSDevice64 oder Android für Employees.s3db vorhanden sind.
    2. Entfernen Sie Win32 aus der Liste, sofern vorhanden (Sie müssen keine Datenbankdateien auf die Win32-Plattform kopieren).
  5. Wählen Sie die Alle Konfigurationen - iOS-Gerät - 64-Bit-Plattform oder Alle Konfigurationen - Android-Plattform aus und überprüfen Sie, ob für Employees.s3db der Bereitstellungspfad StartUp\Documents\ bzw. assets\internal festgelegt ist.

Damit haben Sie festgelegt, dass beim Ausführen Ihrer App auf dem mobilen Gerät die Datenbankdatei (Employees.s3db) im Ordner Documents (iOS-Plattform) oder im internal-Speicher (Android-Plattform) im Sandbox-Bereich Ihrer mobilen App bereitgestellt wird.

Ändern des Codes für die Verbindung zu einer lokalen Datenbankdatei auf mobilen Geräten

Die Hauptfunktionen für diese Anwendung sind nun implementiert. Die in dieser Anwendung eingesetzte Datenbankdatei wurde unter Windows erstellt und steht erst für Ihr mobiles Gerät zur Verfügung, wenn Sie sie auf das mobile Gerät kopieren oder ad-hoc erstellen.

Festlegen des Speicherorts der SQLite-Datenbank auf dem mobilen Gerät

  1. Wählen Sie im Formular-Designer die FDConnection1-Komponente aus.
  2. Doppelklicken Sie im Objektinspektor auf das Ereignis BeforeConnect.
  3. Fügen Sie den folgenden Code für diese Ereignisbehandlungsroutine hinzu:

Delphi:

procedure TForm1.FDConnection1BeforeConnect(Sender: TObject);
begin
  FDConnection1.Params.Values['Database'] := TPath.Combine(TPath.GetDocumentsPath, 'Employees.s3db');
end;

Der Record TPath ist in der Unit System.IOUtils deklariert, daher müssen Sie System.IOUtils in die uses-Klausel der Unit aufnehmen.

C++:

void __fastcall TForm1::FDConnection1BeforeConnect(TObject *Sender)
{
          FDConnection1->Params->Values["ColumnMetadataSupported"] = "False";
          FDConnection1->Params->Values["Database"] = System::Ioutils::TPath::Combine(System::Ioutils::TPath::GetDocumentsPath(), "Employees.s3db");
}

Der Record TPath ist in der Bibliothek System.IOUtils deklariert, daher müssen Sie #include <System.IOUtils.hpp> in die Header-Unit aufnehmen.

Ausführen der Anwendung auf einem mobilen Gerät

Ihre Anwendung kann nun ausgeführt werden (wählen Sie Start > Start aus).

iOS Android

IPodRunTime.png

AndroidTRunTime.png

Siehe auch