Mobile-Tutorial: Verwenden von InterBase ToGo mit FireDac (iOS und Android)

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

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


Bevor Sie mit diesem Tutorial beginnen, sollten Sie das folgende Tutorial durcharbeiten:

Tipp: Für die Bearbeitung dieses Tutorials ist eine Lizenz für IBToGo oder IBLite erforderlich:

  • Wenn Sie eine der folgenden Appmethod-Versionen erworben haben, dann haben Sie in einer E-Mail einen Schlüssel für eine unbefristete Entwicklungs- und Bereitstellungslizenz für IBLite erhalten:
    • Appmethod 1.17 Professional oder höher Alle Editionen
  • Wenn Sie eine Testversion verwenden, umfasst Ihre Installation eine Testlizenz für IBToGo. Sie können InterBase auf iOS und Android durch Auswahl Ihrer Testlizenz bei der Bereitstellung, wie in diesem Tutorial beschrieben, testen. Die Testlizenzen werden mit Ihrem Testprodukt in C:\Users\Public\Documents\Embarcadero\InterBase\redist\InterBaseXE7 installiert.


Führen Sie die Schritte unter Bereitstellungslizenz für IBLite und IBToGo-Testversion aus, um Ihre Lizenzdatei abzurufen und zu installieren.

Hinweis: Auf Android-Geräten müssen für InterBase ToGo-Apps bestimmte Berechtigungen festgelegt werden, insbesondere:
  • Externen Speicher lesen (die Datenbank wird in den externen Arbeitsspeicher gestellt)
  • Externen Speicher schreiben (die Datenbank wird in den externen Arbeitsspeicher gestellt)
  • Internet (Sie müssen eine Verbindung mit einem Remote-Server herstellen)

In diesem Tutorial werden die grundlegenden Schritte zum Durchsuchen der von InterBase ToGo verwalteten Daten auf Ihren iOS- und Android-Geräten mithilfe des FireDAC-Frameworks beschrieben.

iOS Android

DBDemo iPod Runtime.png

DBDemo Runtime.png

Hinweis: Sie können zum Erzeugen von InterBase ToGo-Anwendungen Komponenten von FireDAC, dbExpress und InterBase Express (IBX) verwenden. Eine detaillierte Beschreibung der Verwendung von InterBase Express-Komponenten in Object Pascal-Anwendungen finden Sie unter Einführung in InterBase Express. In diesem Tutorial wird eine Verbindung zu InterBase ToGo über FireDAC hergestellt.

Herstellen einer Verbindung zu der Datenbank mit FireDAC

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

  • FireDAC unterstützt für die mobilen Plattformen InterBase ToGo sowie SQLite. Diese Datenbankprodukte können auf iOS- und Android-Geräten ausgeführt werden.
  • Für andere Datenbanken, wie z. B. Oracle, benötigen Sie zumindest eine Client-Bibliothek. Auf Windows-Plattformen wird die Client-Bibliothek für die Verbindung als DLL bereitgestellt. Deshalb müssen Sie Anwendungen mit Mittelschichttechnologien entwickeln, um von mobilen Geräten eine Verbindung zu diesen Datenbankprodukten herzustellen.
Wie eine Verbindung zu einer Unternehmensdatenbank ohne eine Client-Bibliothek auf einem mobilen Gerät hergestellt wird, ist im Mobile-Tutorial: Herstellen einer Verbindung zu Unternehmensdatenbanken von einem mobilen Client aus (iOS und Android) beschrieben.

Entwerfen und Einrichten der Benutzeroberfläche

In diesem Tutorial werden TListView- und TPanel-Komponenten als UI-Elemente verwendet.

Führen Sie die folgenden Schritte aus, um eine ListView- und eine Panel-Komponente einzurichten:

  1. Wählen Sie zum Erstellen einer geräteübergreifenden HD-Anwendung einen der beiden folgenden Befehle aus:
    • Datei > Neu > Geräteübergreifende Anwendung - Object Pascal > Leere Anwendung
    • Datei > Neu > Geräteübergreifende Anwendung - C++ > Leere Anwendung
  2. Ziehen Sie eine TListView-Komponente auf das Formular.
  3. Legen Sie im Objektinspektor die folgenden Eigenschaften für die ListView-Komponente fest:
    • Setzen Sie die Eigenschaft Align auf Client, damit sich die ListView-Komponente über das gesamte Formular erstreckt.
    • Setzen Sie die Eigenschaft ItemAppearance auf ListItemRightDetail.
    • Setzen Sie SearchVisible auf true.
  4. Fügen Sie eine TPanel-Komponente hinzu, und legen Sie im Objektinspektor die folgenden Eigenschaften fest:
    • Setzen Sie die Eigenschaft Align für die TPanel-Komponente auf Top.
  5. Fügen Sie der TPanel-Komponente eine TLabel-Komponente hinzu, und legen Sie im Objektinspektor die folgenden Eigenschaften fest:
    • Setzen Sie die Eigenschaft Align für die TLabel-Komponente auf Client.
    • Setzen Sie Ansichten auf iOS oder Android.
    • Setzen Sie die Eigenschaft StyleLookup auf listboxitemlabel.
    • Setzen Sie Ansichten auf Master zurück.
    • Setzen Sie die Eigenschaft HorzAlign in TextSettings auf Center.
    • Setzen Sie die Eigenschaft Text auf DB DEMO.

Herstellen einer Verbindung zu den Daten

Mit den folgenden grundlegenden Schritten stellen Sie eine Verbindung zu den Daten in einer Datenbank über FireDAC her:

  1. Doppelklicken Sie in der Tool-Palette auf die Komponente TFDConnection.
    FDConnectionComp.png
  2. Klicken Sie mit der rechten Maustaste auf die TFDConnection-Komponente, und wählen Sie Verbindungseditor.
  3. Legen Sie im FireDAC-Verbindungseditor die folgenden Parameter der TFDConnection-Komponente fest:
    1. Setzen Sie die Eigenschaft Treiber-ID auf IB.
    2. Setzen Sie den Parameter Database auf:
      C:\Users\Public\Documents\Embarcadero\Studio\17.0\Samples\Data\dbdemos.gdb (Speicherort der Datenbank)
      und klicken Sie im Dialogfeld "Datei öffnen" auf Öffnen.
    3. Legen Sie den Parameter User_name auf sysdba fest.
    4. Setzen Sie den Parameter Password auf masterkey.
    5. Setzen Sie den Parameter Protocol auf TCPIP.
      FDConnectionEditor.png

    6. Klicken Sie auf die Schaltfläche Testen, um die Verbindung zu testen.
    7. Klicken Sie auf OK, um den Verbindungseditor zu schließen.
  4. Legen Sie im Objektinspektor die folgenden Eigenschaften der TFDConnection-Komponente fest:
    1. Setzen Sie die Eigenschaft LoginPrompt auf False, damit der Benutzer nicht zur Eingabe von Anmeldedaten aufgefordert wird.
    2. Setzen Sie Eigenschaft Connected auf True.
      Hinweis: Wenn in der Entwicklungsumgebung eine Fehlermeldung ("Datenbank nicht verfügbar") angezeigt wird, bedeutet dies, dass Sie über keine aktuelle Lizenz für InterBase verfügen. Einige Editionen des Produkts beinhalten die Lizenz für InterBase Developer Edition. Weitere Informationen finden Sie unter Fehlerbehebung.
  5. Fügen Sie dem Formular eine TFDQuery-Komponente hinzu.
  6. Klicken Sie mit der rechten Maustaste auf die TFDQuery-Komponente, und wählen Sie Abfrageeditor.
    1. Geben Sie in den SQL-Anweisungstext-Editor select COMMON_NAME, SPECIES_NAME from BIOLIFE order by COMMON_NAME ein.
    2. Klicken Sie auf die Schaltfläche Ausführen, um die Ergebnisse der Anweisung anzuzeigen.
      FDQueryCommandDBDemo.png

    3. Klicken Sie auf OK, um den Abfrageeditor zu schließen.
  7. Setzen Sie im Objektinspektor die Eigenschaft Active der auf TFDQuery-Komponente auf True.
  8. Öffnen Sie den LiveBindings-Designer, und verbinden Sie die Daten und die Benutzeroberfläche folgendermaßen:
    1. Klicken Sie in FDQuery1 auf COMMON_NAME, und ziehen Sie den Mauszeiger auf Item.Text in ListView1.
      LiveBindingsDesignerCommon Name.png

      Damit wurden dem Formular die Komponenten TBindSourceDB und TBindingsList hinzugefügt.
    2. Klicken Sie in BindSourceDB1 auf SPECIES_NAME, und ziehen Sie den Mauszeiger auf Item.Detail in ListView1.
      DBDemoDesignTime.png
  9. Fügen Sie dem Formular eine TFDPhysIBDriverLink-Komponente hinzu.
  10. Fügen Sie dem Formular eine TFDGUIxWaitCursor-Komponente hinzu.
Hinweis: Im Thema Vorbereiten der FireDAC-Anwendung für die Ausführung wird die Verwendung der Komponenten TFDGUIxWaitCursor und TFDPhysIBDriverLink in einer FireDAC-Anwendung erklärt.

Bereitstellen der Anwendung für mobile Geräte

Bis jetzt haben Sie InterBase auf dem Desktop verwendet. Das bedeutet, dass sich die eigentliche Datenbank auf Ihrer lokalen Festplatte (z. B. C:\Users\Public\Documents\Embarcadero\Studio\17.0\Samples\Data\dbdemos.gdb) 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 mobilen Geräten herzustellen:

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

Bereitstellen der erforderlichen Dateien von InterBase ToGo und der Datenbankdatei auf mobilen Geräten

Damit Ihre Anwendung auf mobilen Geräten ausgeführt werden kann, müssen Sie die folgenden Dateien bereitstellen:

  • Erforderliche InterBase ToGo-Dateien (die Lizenzdatei und andere Konfigurationsdateien)
  • Die Datenbankdatei (dbdemos.gdb)

Stellen Sie diese Dateien für Ihre Anwendung wie folgt bereit:

  1. Sie können die Datenbank mit einer der beiden folgenden Methoden dem Projekt hinzufügen:
    • Klicken Sie in der Projektverwaltung mit der rechten Maustaste auf den Projektnamen, und wählen Sie im Kontextmenü Hinzufügen… (oder Projekt > Dem Projekt hinzufügen) aus, um das Dialogfeld Dem Projekt hinzufügen anzuzeigen. Navigieren Sie zum Speicherort der Datenbank C:\Users\Public\Documents\Embarcadero\Studio\17.0\Samples\Data, wählen Sie die Datenbank dbdemos.gdb aus, und klicken Sie auf Öffnen.
    • Navigieren Sie zum Speicherort der Datenbank C:\Users\Public\Documents\Embarcadero\Studio\17.0\Samples\Data, ziehen Sie die Datenbank dbdemos.gdb in der Projektverwaltung auf das Projekt. Klicken Sie auf Ja, um zu bestätigen, dass Sie die Datei dem Projekt hinzufügen möchten.
  2. Nachdem die Datenbankdatei hinzugefügt wurde, wird das Fenster Weitere Dateien angezeigt. Wählen Sie im Dialogfeld Weitere Dateien den Eintrag InterBase ToGo aus, und klicken Sie dann auf OK, um das Dialogfeld zu schließen.
    • Unter dem Knoten InterBase ToGo müssen Sie die Lizenz auswählen, die für die Bereitstellung der Anwendung auf dem Gerät verwendet werden soll.
      • Im Tipp am Anfang dieses Tutorials wird beschrieben, wie Sie eine InterBase-Lizenz aktivieren.
      • Die vorgeschlagenen Namen für die verfügbaren Dateien sind im Dialogfeld Weitere Dateien unter dem folgenden Namensmuster aufgeführt: reg_*.txt.
        Wie Sie der folgenden Abbildung entnehmen können, wurde für dieses Tutorial die Lizenzdatei reg_ibtogo.txt ausgewählt.
      • Möglicherweise haben Sie von Embarcadero eine Lizenzdatei für IBToGo oder IBLite im Format reg_nnnnnnn.txt (nnnnnnn ist eine generierte Zahl) erhalten:
        • Wenn Sie die Datei unter dem Namen reg_ibtogo.txt oder reg_iblite.txt z. B. im Verzeichnis C:\Users\Public\Documents\Embarcadero\InterBase\redist\InterBaseXE7 gespeichert haben, können Sie einfach die gewünschte Lizenz auswählen.
        • Wenn Sie die Datei unter ihrem Originalnamen gespeichert haben, dann wählen Sie Dateien hinzufügen (siehe nächster Schritt) und nehmen die Lizenzdatei in die Liste der für die Bereitstellung der Anwendung erforderlichen Dateien auf.
    FeaturedFilesiOSAndroidDB.png

  3. Öffnen Sie den Bereitstellungs-Manager durch die Auswahl von Projekt > Bereitstellung.
  4. Wählen Sie oben im Bereitstellungs-Manager in der Dropdown-Liste mit den Zielplattformen Debug-Konfiguration - iOS-Gerät - 32-Bit-Plattform, Debug-Konfiguration - iOS-Gerät - 64-Bit-Plattform oder Debug-Konfiguration - Android-Plattform aus, und überzeugen Sie sich davon, dass die Datenbank dbdemos.gdb den Plattformen hinzugefügt wurde.
  5. Der Remote-Pfad für dbdemos.gdb wurde für die iOS- und Android-Plattformen wie folgt festgelegt:
    • Remote-Pfad auf der iOS-Geräteplattform: StartUp\Documents\
    ChangeToStartUpDocuments.png
    • Remote-Pfad auf der Android-Plattform: assets\internal\
    AddDBforAndroidAssets.png

Damit haben Sie festgelegt, dass beim Ausführen der App auf dem mobilen Gerät die Datenbankdatei (dbdemos.gdb) im Ordner Documents (iOS-Plattform) oder im internen Speicher (Android-Plattform) im Sandbox-Bereich Ihrer geräteübergreifenden Anwendung bereitgestellt wird.

Erstellen Sie für TFDConnection die Ereignisbehandlungsroutine BeforeConnect wie folgt:

  1. Wählen Sie im Formular-Designer die Komponente TFDConnection aus.
  2. Öffnen Sie im Objektinspektor die Registerkarte "Ereignisse", und doppelklicken Sie auf das Ereignis BeforeConnect.
  3. Implementieren Sie die Ereignisbehandlungsroutine für das Ereignis BeforeConnect, indem Sie den folgenden Code hinzufügen:
    • Für Object Pascal:
    procedure TForm1.FDConnection1BeforeConnect(Sender: TObject);
    begin
      {$IF DEFINED(iOS) or DEFINED(ANDROID)}
       FDConnection1.Params.Values['Protocol'] := 'Local';
       FDConnection1.Params.Values['Database'] :=  TPath.Combine(TPath.GetDocumentsPath, 'dbdemos.gdb');
      {$ENDIF}
    end;
    

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

    implementation
    
    {$R *.fmx}
    {$R *.NmXhdpiPh.fmx ANDROID}
    {$R *.iPhone4in.fmx IOS}
    
    uses System.IOUtils;
    
    procedure TForm1.FDConnection1BeforeConnect(Sender: TObject);
    //  previous code goes here
    
    • Für C++:
    void __fastcall TForm1::SQLConnection1BeforeConnect(TObject *Sender)
    {
      #if defined(_PLAT_IOS) || defined(_PLAT_ANDROID)
          FDConnection1->Params->Values["Protocol"] = "Local";
          FDConnection1->Params->Values["Database"] = System::Ioutils::TPath::Combine(System::Ioutils::TPath::GetDocumentsPath(), "dbdemos.gdb");
      #endif
    }
    

    Sie müssen #include <System.IOUtils.hpp> in die Unit (.cpp-Datei) einfügen.

Ausführen der Anwendung auf einem Simulator oder auf einem mobilen Gerät

Sie können die Anwendung jetzt mit Start > Start oder F9 ausführen. Sie sollten genau wie in der IDE die Daten durchsuchen können. Mithilfe des Suchfeldes können Sie die Suche eingrenzen.

iOS Android

IPodSearchDBDemo.png

Screenshot 2013-11-02-03-34-10.png

Fehlerbehebung

InterBase-Probleme

In folgendem Abschnitt finden Sie detaillierte Informationen zu InterBase-Lizenzproblemen.

Hinweis: Führen Sie die Schritte unter Bereitstellungslizenz für IBLite und IBToGo-Testversion aus, um eine gültige Lizenzdatei abzurufen.

Exception-Behandlungsprobleme

Wenn die Anwendung eine Exception auslöst, ohne dass entsprechender Exception-Behandlungscode vorhanden ist, stürzt die geräteübergreifende Anwendung zur Laufzeit einfach ab (verschwindet).

In diesem Fall sollten Sie für die Fehlerbehebung mit den folgenden Schritten manuell eine Verbindung zu der Datenbank herstellen:

  1. Wählen Sie die Komponente FDConnection1 aus, und ändern Sie die Eigenschaft Connected in False.
  2. Ziehen Sie eine Schaltfläche auf das Formular, und erstellen Sie die folgende Ereignisbehandlungsroutine, um manuell eine Verbindung zu der Datenbank herzustellen:
    Object Pascal:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      try
        FDConnection1.Connected := True;
        FDQuery1.Active := True;
      except
        on e: Exception do
        begin
          ShowMessage(e.Message);
        end;
      end;
    end;
    
    C++:
    void __fastcall TForm1::Button1Click(TObject *Sender) {
        try {
            FDConnection1->Connected = true;
            FDQuery1->Active = true;
        }
        catch(Exception &e) {
            ShowMessage(e.Message);
        }
    }
    
  3. Überprüfen Sie die Fehlermeldung.

Siehe auch