Mobile-Tutorial: Verwenden von InterBase ToGo mit FireDac (iOS und Android)
Nach oben zu Mobile-Tutorials: Mobile Anwendungsentwicklung (iOS und Android)
Inhaltsverzeichnis
- 1 Herstellen einer Verbindung zu der Datenbank mit FireDAC
- 2 Entwerfen und Einrichten der Benutzeroberfläche
- 3 Herstellen einer Verbindung zu den Daten
- 4 Bereitstellen der Anwendung für mobile Geräte
- 5 Ausführen der Anwendung auf einem Simulator oder auf einem mobilen Gerät
- 6 Fehlerbehebung
- 7 Siehe auch
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 Tokyo Professional oder höher Alle Editionen
- Delphi Tokyo 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.
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 |
---|---|
- 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 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 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.
- 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, wie DataSnap, entwickeln, um von mobilen Geräten eine Verbindung zu diesen Datenbankprodukten herzustellen.
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:
- 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
- Ziehen Sie eine TListView-Komponente auf das Formular.
- 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.
- 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.
- 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:
- Doppelklicken Sie in der Tool-Palette auf die Komponente TFDConnection.
- Klicken Sie mit der rechten Maustaste auf die TFDConnection-Komponente, und wählen Sie Verbindungseditor.
- Legen Sie im FireDAC-Verbindungseditor die folgenden Parameter der TFDConnection-Komponente fest:
- Setzen Sie die Eigenschaft Treiber-ID auf IB.
- Setzen Sie den Parameter Database auf:
C:\Users\Public\Documents\Embarcadero\Studio\19.0\Samples\Data\dbdemos.gdb
(Speicherort der Datenbank)- und klicken Sie im Dialogfeld "Datei öffnen" auf Öffnen.
- Legen Sie den Parameter User_name auf sysdba fest.
- Setzen Sie den Parameter Password auf masterkey.
- Setzen Sie den Parameter Protocol auf TCPIP.
- Klicken Sie auf die Schaltfläche Testen, um die Verbindung zu testen.
- Klicken Sie auf OK, um den Verbindungseditor zu schließen.
- Legen Sie im Objektinspektor die folgenden Eigenschaften der TFDConnection-Komponente fest:
- Setzen Sie die Eigenschaft LoginPrompt auf False, damit der Benutzer nicht zur Eingabe von Anmeldedaten aufgefordert wird.
- 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.
- Fügen Sie dem Formular eine TFDQuery-Komponente hinzu.
- Klicken Sie mit der rechten Maustaste auf die TFDQuery-Komponente, und wählen Sie Abfrageeditor.
- Setzen Sie im Objektinspektor die Eigenschaft Active der auf TFDQuery-Komponente auf True.
- Öffnen Sie den LiveBindings-Designer, und verbinden Sie die Daten und die Benutzeroberfläche folgendermaßen:
- Klicken Sie in FDQuery1 auf COMMON_NAME, und ziehen Sie den Mauszeiger auf Item.Text in ListView1.
- Damit wurden dem Formular die Komponenten TBindSourceDB und TBindingsList hinzugefügt.
- Klicken Sie in BindSourceDB1 auf SPECIES_NAME, und ziehen Sie den Mauszeiger auf Item.Detail in ListView1.
- Klicken Sie in FDQuery1 auf COMMON_NAME, und ziehen Sie den Mauszeiger auf Item.Text in ListView1.
- Fügen Sie dem Formular eine TFDPhysIBDriverLink-Komponente hinzu.
- 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\19.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:
- 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\19.0\Samples\Data
, wählen Sie die Datenbankdbdemos.gdb
aus, und klicken Sie auf Öffnen. - Navigieren Sie zum Speicherort der Datenbank
C:\Users\Public\Documents\Embarcadero\Studio\19.0\Samples\Data
, ziehen Sie die Datenbankdbdemos.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.
- 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
- 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.
- Wenn Sie die Datei unter dem Namen reg_ibtogo.txt oder reg_iblite.txt z. B. im Verzeichnis
- 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.
- Öffnen Sie den Bereitstellungs-Manager durch die Auswahl von Projekt > Bereitstellung.
- 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. - 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\
- Remote-Pfad auf der Android-Plattform:
assets\internal\
- Remote-Pfad auf der iOS-Geräteplattform:
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:
- Wählen Sie im Formular-Designer die Komponente TFDConnection aus.
- Öffnen Sie im Objektinspektor die Registerkarte "Ereignisse", und doppelklicken Sie auf das Ereignis BeforeConnect.
- Implementieren Sie die Ereignisbehandlungsroutine für das Ereignis BeforeConnect, indem Sie den folgenden Code hinzufügen:
- Für Delphi:
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 |
---|---|
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:
- Wählen Sie die Komponente FDConnection1 aus, und ändern Sie die Eigenschaft Connected in False.
- 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 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); } }
- Überprüfen Sie die Fehlermeldung.
Siehe auch
- http://www.embarcadero.com/products/interbase/product-editions (EN)
- Mobile-Tutorial: Verwenden von FireDAC und SQLite (iOS und Android)
Beispiele
- FireDAC InterBase (Beispiel)