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

Aus RAD Studio
Wechseln zu: Navigation, Suche

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


YellowBang.png Achtung: dbExpress, das in diesem Tutorial beschrieben ist, ist veraltet. Das heißt, dass dbExpress in einer der nächsten Versionen aus RAD Studio entfernt wird.
Anstelle von dbExpress empfehlen wir die Verwendung unserer neueren Datenbanklösung, FireDAC, das in einem ähnlichen Tutorial beschrieben ist. Sie finden dieses Tutorial hier:
Mobile-Tutorial: Verwenden von InterBase ToGo mit FireDAC (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 RAD Studio-Versionen erworben haben, dann haben Sie in einer E-Mail einen Schlüssel für eine unbefristete Entwicklungs- und Bereitstellungslizenz für IBLite erhalten:
    • RAD Studio Rio Professional oder höher Alle Editionen
    • Delphi Rio Professional mit mobiler Entwicklung oder höher
  • 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.
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 dbExpress-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 Delphi-Anwendungen finden Sie unter Einführung in InterBase Express. In diesem Tutorial wird eine Verbindung zu InterBase ToGo über das dbExpress-Framework hergestellt.

Herstellen einer Verbindung zu der Datenbank mit dbExpress

dbExpress ist ein sehr schnelles, in Delphi geschriebenes Framework für den Datenbankzugriff. RAD Studio enthält Treiber für die wichtigsten Datenbanken, wie InterBase, Oracle, DB2, SQL Server, MySQL, Firebird, SQLite und ODBC. Sie können auf diese Datenbanken mit ähnlichen Verfahren wie in der hier beschriebenen Anleitung zugreifen.

  • dbExpress 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, wie DataSnap, 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 - Delphi > Leere Anwendung
    • Datei > Neu > Geräteübergreifende Anwendung - C++Builder > 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 die Eigenschaft StyleLookup auf toollabel.
    • Ändern Sie die Eigenschaft HorzAlign von TextSettings in 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 dbExpress her:

  1. Doppelklicken Sie in der Tool-Palette auf die Komponente TSQLConnection.
    SelectSqlConnection.png
  2. Legen Sie im Objektinspektor die folgenden Eigenschaften für TSQLConnection fest:
    1. In dieser App wird InterBase ToGo verwendet, setzen Sie daher die Eigenschaft Driver auf IBLite/ToGo.
      SelectDriverForSQLConnection.png
    2. Setzen Sie die Eigenschaft LoginPrompt auf False, damit der Benutzer nicht zur Eingabe von Anmeldedaten aufgefordert wird.
    3. Klicken Sie neben der Eigenschaft Params auf die Ellipse [...], und setzen Sie den Database-Wert auf C:\Users\Public\Documents\Embarcadero\Studio\20.0\Samples\Data\dbdemos.gdb (Speicherort der Datenbank).
    4. Überprüfen Sie, dass der VendorLib-Wert auf ibtogo.dll (Client-Software-Bibliothek) gesetzt ist, und klicken Sie dann auf "OK", um das Dialogfeld zu schließen:
      ValueListEditor2.png

    5. 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.
  3. Fügen Sie eine TSQLDataSet-Komponente hinzu, und legen Sie im Objektinspektor die folgenden Eigenschaften fest:
    1. Setzen Sie die Eigenschaft SQLConnection auf SQLConnection1 (die Sie im vorherigen Schritt hinzugefügt haben).
    2. Setzen Sie die Eigenschaft CommandText auf select COMMON_NAME, SPECIES_NAME from BIOLIFE order by COMMON_NAME.
    3. Setzen Sie die Eigenschaft Active auf True.
  4. Öffnen Sie den LiveBindings-Designer, und verbinden Sie die Daten und die Benutzeroberfläche folgendermaßen:
    1. Klicken Sie in SQLDataSet1 auf COMMON_NAME, und ziehen Sie den Mauszeiger auf Item.Text in ListView1.
      CommonName ListView.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.
      DBDemo LiveBindingsDesigner.png

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\20.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 von InterBase ToGo, des dbExpress-Treibers 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:

  • InterBase ToGo
  • dbExpress-Treiber für InterBase (für den iOS-Simulator)
  • Die Datenbankdatei (dbdemos.gdb)
  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\20.0\Samples\Data, wählen Sie die dbdemos.gdb aus, und klicken Sie auf Öffnen.
    • Navigieren Sie zum Speicherort der Datenbank C:\Users\Public\Documents\Embarcadero\Studio\20.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 die folgenden Datenbankmodule aus, und klicken Sie dann auf OK, um das Dialogfeld "Weitere Dateien" zu schließen:
    • InterBase ToGo. Sie müssen 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.
    • dbExpress InterBase-Treiber
    Tipp: Wenn Sie Ihre Anwendung auf dem iOS-Simulator testen möchten, dann müssen Sie auch den dbExpress InterBase-Treiber für den iOS-Simulator auswählen.
    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äteplattform 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.

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

Wie im vorherigen Schritt beschrieben, wird die TSQLConnection-Komponente mit einer Datenbank auf dem lokalen Dateisystem mit einem absoluten Pfad verbunden. Deshalb müssen Sie den Speicherort der Datei vor dem Herstellen einer Verbindung zu der Datenbank wie folgt ändern:

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

Delphi:

procedure TForm1.SQLConnection1BeforeConnect(Sender: TObject);
begin
  {$IF DEFINED(iOS) or DEFINED(ANDROID)}
   SQLConnection1.Params.Values['Database'] := 
      TPath.Combine(TPath.GetDocumentsPath, 'dbdemos.gdb');
  {$ENDIF}
end;

C++:

void __fastcall TForm1::SQLConnection1BeforeConnect(TObject *Sender)
{
  #if defined(_PLAT_IOS) || defined(_PLAT_ANDROID)
  SQLConnection1->Params->Values["Database"] = System::Ioutils::TPath::Combine(System::Ioutils::TPath::GetDocumentsPath(), "dbdemos.gdb");
  #endif
}

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

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

Ihre Anwendung kann nun ausgeführt werden. 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 SQLConnection1 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:
    Delphi:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      try
        SQLConnection1.Connected := True;
        SQLDataSet1.Active := True;
      except
        on e: Exception do
        begin
          ShowMessage(e.Message);
        end;
      end;
    end;
    
    C++:
    void __fastcall TForm1::Button1Click(TObject *Sender) {
            try {
    	SQLConnection1->Connected = True;
    	SQLDataSet1->Active = True;
            }
            catch(Exception *e) {
            ShowMessage(e->Message);
    }
    
  3. Überprüfen Sie die Fehlermeldung.

Siehe auch