Mobile-Tutorial: Herstellen einer Verbindung zu Unternehmensdatenbanken von mobilen Client-Anwendungen aus (iOS und Android)

Aus RAD Studio
Wechseln zu: Navigation, Suche

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


Bevor Sie dieses Tutorial beginnen:

In diesem Tutorial wird beschrieben, wie Sie von einer mobilen Client-Anwendung aus eine Verbindung zu einer Unternehmensdatenbank herstellen.

Für die Verbindung zu einer Unternehmensdatenbank benötigen Sie eine Client-Bibliothek. Meistens wird die Client-Bibliothek vom Hersteller der Datenbank als DLL bereitgestellt. Für mobile Geräte ist dieses Vorgehen nicht angebracht, weil keine Client-Bibliothek verfügbar ist. Zur Lösung dieses Problems können Sie eine Mittelschicht für die Verbindung zu einer Unternehmensdatenbank entwickeln, und Ihre Anwendung kann mit der Mittelschicht interagieren.

RAD Studio stellt das DataSnap-Framework bereit, mit dem Sie die Mittelschicht, fast ohne zu programmieren, entwickeln (und darauf zugreifen) können. In diesem Tutorial werden die Schritte zum Entwickeln der Mittelschicht und des mobilen Clients beschrieben.

NTiersMobileAppDiagram.png

Erstellen der Mittelschicht: Ein DataSnap-Server

Erstellen Sie zunächst einen DataSnap-Server, der eine Tabelle von einem Datenbankserver bereitstellt. In diesem Tutorial wird als DataSnap-Server eine DataSnap-Server-VCL-Formularanwendung verwendet.

Hinweis: In diesem Tutorial dient der DataSnap-Server (eine VCL-Anwendung) als Mittelschicht in einer mehrschichtigen Datenbankanwendung. Sie können eine Instanz eines DataSnap-Servers einfach erstellen und später wieder löschen. Wenn Ihnen die grundlegenden Schritte klar sind, können Sie die Mittelschicht in eine Windows-Dienstanwendung umwandeln.

Erstellen einer DataSnap-Server-VCL-Anwendung

  1. Um ein neues Delphi- oder C++-Projekt zu erstellen, wählen Sie Datei > Neu > Weitere, und im Dialogfeld Objektgalerie wählen Sie dann:
    • Für Delphi: Delphi-Projekte > DataSnap-Server > DataSnap-Server
    • Für C++: C++Builder-Projekte > DataSnap-Server > DataSnap-Server
    DSServer iOS1.png

  2. Der Experte Neuer DataSnap-Server wird angezeigt:
    DSServer iOS2.png

    1. Wählen Sie als ersten Schritt Formularanwendung als Projekttyp aus.
    2. Wählen Sie als zweiten Schritt VCL-Anwendung als Anwendungstyp aus.
    3. Wählen Sie als dritten Schritt das Protokoll TCP/IP, die Servermethodenklasse und Beispielmethoden aus der Liste aus.
    4. Belassen Sie im vierten Schritt die Einstellung des Standard-TCP/IP Kommunikations-Ports auf 211. Damit wird sichergestellt, dass die Kommunikation zwischen dem Client und dem Server über den Standard-DataSnap-Port ausgeführt wird.
    5. Wählen Sie als fünften und letzten Schritt TDSServerModule als Vorfahre für die Servermethoden aus.
  3. Speichern Sie die neue Formular-Unit unter DataSnapServerUnit.
  4. Wechseln Sie zu DataSnapServerUnit, und ändern Sie die Eigenschaft Name des Formulars in DSServerForm.
  5. Speichern Sie die Servermethoden-Unit (vom Experten standardmäßig als ServerMethodsUnit1 erstellt) unter dem Namen ServerModuleUnit.
  6. Speichern Sie die Servercontainer-Unit (vom Experten standardmäßig als ServerContainerUnit1 erstellt) unter dem Namen ServerContainerUnit.
  7. Speichern Sie das neue Projekt unter DataSnapServerProject.
  8. Wählen Sie in der Projektverwaltung ProjectGroup1 aus, und speichern Sie das Projekt unter DataSnapTutorialProjectGroup.groupproj.
    SaveAsDataSnapTutorialProjectGroup.png


Definieren einer Datenmenge für den DataSnap-Server

  1. Wechseln Sie zur Datei ServerContainerUnit.pas, und ersetzen Sie für Delphi die uses-Klausel in der Implementierung durch uses Winapi.Windows, ServerModuleUnit, und ersetzen Sie für C++ in ServerContainerUnit.cpp #include "ServerMethodsUnit.h" durch #include "ServerModuleUnit.h" .
  2. Wechseln Sie zur Datei ServerModuleUnit.pas.
  3. Ändern Sie im Formular-Designer die Eigenschaft Name des Servermoduls in DSServerModule_EMPLOYEE.
  4. Konfigurieren Sie die folgenden Komponenten für das Servermodul:
    • Ziehen Sie eine TSQLConnection-Komponente in das Servermodul, und legen Sie die folgenden Eigenschaften fest:
      TSQLConnection kapselt die dbExpress-Verbindung zu einem Datenbankserver.
      • Setzen Sie die Eigenschaft Name auf SQLConnection_EMPLOYEE.
      • Setzen Sie die Eigenschaft LoginPrompt auf False.
      • Setzen Sie Driver auf InterBase Server.
      Hinweis: Stellen Sie sicher, dass der InterBase-Server ausgeführt wird.
      • Erweitern Sie den Knoten Driver, und setzen Sie die Eigenschaft DataBase auf C:\Users\Public\Documents\Embarcadero\Studio\20.0\Samples\Data\EMPLOYEE.GDB.
      • Setzen Sie Eigenschaft Connected auf True. Falls Sie eine Fehlermeldung erhalten, überprüfen Sie die Driver-Eigenschaften:
        DefineConnectionToInterBase.png

    • Ziehen Sie eine TSQLDataSet-Komponente in das Servermodul, und legen Sie die folgenden Eigenschaften fest:
      TSQLDataSet stellt die Daten dar, die mit dbExpress abgerufen wurden.
      • Setzen Sie die Eigenschaft Name auf SQLDataSet_EMPLOYEE.
      • Setzen Sie die Eigenschaft SQLConnection auf SQLConnection_EMPLOYEE.
      • Setzen Sie die Eigenschaft CommandType auf ctTable.
      • Setzen Sie die Eigenschaft CommandText auf EMPLOYEE.
      • Setzen Sie die Eigenschaft Active auf True. Falls Sie eine Fehlermeldung erhalten, überprüfen Sie die Eigenschaften, die Sie gerade konfiguriert haben.
    • Ziehen Sie eine TDataSetProvider-Komponente in das Servermodul, und legen Sie die folgenden Eigenschaften fest:
      Die Komponente TDataSetProvider packt Daten aus einer Datenmenge und übergibt ein oder mehrere übertragbare Datenpakete an den DataSnap-Client.
      • Setzen Sie die Eigenschaft Name auf DataSetProvider_EMPLOYEE.
      • Setzen Sie die Eigenschaft DataSet auf SQLDataSet_EMPLOYEE:
      • ServerModuleUnit.png

Hinweis: In diesem Tutorial wird InterBase verwendet. Sie können aber mit denselben Schritten eine Verbindung zu jedem beliebigen Datenbankserver herstellen. Wählen Sie für die Verbindung den entsprechenden Treiber und andere Eigenschaften für die jeweilige Datenbank aus.

Bereitstellen der Datenmenge vom DataSnap-Server

Sie haben gerade ein neues Servermodul mit einer DataSet-Komponente und einer DataSetProvider-Komponente erstellt, die Daten in die nächste Schicht packt. Als Nächstes muss das Servermodul für den DataSnap-Client bereitgestellt werden.

  1. Öffnen Sie im Formular-Designer ServerContainerUnit.
  2. Wählen Sie DSServerClass1, und aktualisieren Sie die vorhandene Ereignisbehandlungsroutine für das Ereignis OnGetClass. Fügen Sie der Ereignisbehandlungsroutine DSServerClass1 den folgenden Quelltext hinzu:

Delphi:

procedure TServerContainer1.DSServerClass1GetClass(DSServerClass: TDSServerClass;
  var PersistentClass: TPersistentClass);
begin
  PersistentClass := TDSServerModule_EMPLOYEE;
end;

C++ (nur für iOS):

void __fastcall TServerContainer1::DSServerClass1GetClass(TDSServerClass *DSServerClass,
          TPersistentClass &PersistentClass)
{
        PersistentClass =  __classid(TDSServerModule_EMPLOYEE);
}

Mit dieser Ereignisbehandlungsroutine stellt der DataSnap-Server Provider und public-Methoden in dieser Klasse für einen DataSnap-Client bereit. Ausgehend von den Schritten im vorherigen Abschnitt wird nun die Komponente DataSetProvider_EMPLOYEE DataSetProvider für den DataSnap-Client bereitgestellt.

Ausführen des DataSnap-Servers

Die Implementierung des DataSnap-Servers ist abgeschlossen. Klicken Sie mit der rechten Maustaste auf DataSnapServerProject.exe, und wählen Sie Ohne Debugger ausführen.

RunDataSnapServerProjectWihoutDebugging.png.

Der DataSnap-Server wird nun auf Ihrem Windows-Computer ausgeführt. Da dieser DataSnap-Server keine UI-Elemente hat, sieht er wie ein leeres Formular aus, und das ist hier genau das erwartete Verhalten.

RunDataSnapServerRunningOnWindows.png

Erstellen einer mobilen Anwendung für die Verbindung zum DataSnap-Server

Als Nächstes wird die mobile Client-Anwendung erstellt.

  1. Klicken Sie in der Projektverwaltung mit der rechten Maustaste auf DataSnapTutorialProjectGroup, und wählen Sie Neues Projekt hinzufügen.
    AddNewProjectToDataSnapTutorialProjectGroup.png

  2. Wählen Sie auf der Seite Delphi-Projekte den Eintrag Geräteübergreifende Anwendung aus:
    SelectFireMonkeyMobileApplication.png

  3. Speichern Sie die neue Unit unter DataSnapClientUnit.
  4. Speichern Sie das neue Projekt unter DataSnapClientProject.
  5. Öffnen Sie DataSnapClientUnit, und ändern Sie die Eigenschaft Name des Formulars in DSClientForm.
  6. Ziehen Sie die folgenden Komponenten in den Formular-Designer:
    • TSQLConnection (SQLConnection1)
      TSQLConnection kapselt die dbExpress-Verbindung zu einem Datenbankserver. Außerdem unterstützt die Komponente den DataSnap-Server.
      • Setzen Sie die Eigenschaft Driver auf DataSnap.
      • Erweitern Sie die Eigenschaft Driver, und setzen Sie die Eigenschaft HostName auf den Host-Namen oder die IP-Adresse des DataSnap-Servers.
      • Setzen Sie die Eigenschaft LoginPrompt auf False.
      • Setzen Sie Eigenschaft Connected auf True.
        Wenn Sie eine Fehlermeldung erhalten, überprüfen Sie die gerade festgelegten Eigenschaften nochmals.
    • TDSProviderConnection (DSProviderConnection1)
      Die Komponente TDSProviderConnection stellt die Konnektivität zu DataSnap-Servern mithilfe von dbExpress her.
      • Setzen Sie die Eigenschaft SQLConnection auf SQLConnection1.
      • Setzen Sie ServerClassName auf TDSServerModule_EMPLOYEE. Dieser Name muss mit dem Namen der Klasse des Servermoduls des DataSnap-Servers übereinstimmen.
      • Setzen Sie Eigenschaft Connected auf True.
    • TClientDataSet (ClientDataSet1)
      TClientDataSet implementiert eine datenbankunabhängige Datenmenge, die als lokaler Speicherpuffer der Datensätze aus einer anderen Datenmenge verwendet werden kann.
      • Setzen Sie die Eigenschaft RemoteServer auf DSProviderConnection1.
      • Setzen Sie die Eigenschaft ProviderName auf DataSetProvider_EMPLOYEE. Dieser Name muss mit dem Namen des Providers für den DataSnap-Server übereinstimmen.
      • Setzen Sie die Eigenschaft Active auf True.
    • TListBox
      • Setzen Sie die Eigenschaft Align auf Client:
    Configure iOSDataSnapClient.png

  7. Öffnen Sie den LiveBindings-Designer, und verbinden Sie die Daten und die Benutzeroberfläche folgendermaßen:
    1. Klicken Sie in BindSourceDB1 auf FULL_NAME, und ziehen Sie den Mauszeiger auf Item.Text in ListBox1:
      ConnectFullNameToItemText.png

    2. Nun haben Sie den DataSnap-Client auf der mobilen Plattform erstellt und konfiguriert. Die Daten vom DataSnap-Server sollten nun in der IDE angezeigt werden:

iOS

Android

DSClientCompleted.png    DSClientCompletedAndroid.png  

Bereitstellen der MIDAS-Bibliothek auf dem iOS-Simulator

Damit Ihre Anwendung auf dem iOS-Simulator ausgeführt werden kann, müssen Sie die folgenden Dateien bereitstellen:

  • MIDAS-Bibliothek
  1. Öffnen Sie den Bereitstellungs-Manager durch Auswahl von Projekt > Bereitstellung.
  2. Wählen Sie Weitere Dateien hinzufügen (DMgrAddFeatFiles.png):
    AddingFeaturedFiles.png

  3. Wählen Sie das folgende Modul aus, und klicken Sie dann auf OK, um den Bereitstellungs-Manager zu schließen:
    • MIDAS-Bibliothek
      SelectingMIDASFeaturedFiles.png

Ausführen der Anwendung auf der mobilen Plattform

Ihre Anwendung kann nun ausgeführt werden.

Wählen Sie in der Projektverwaltung die mobile Zielplattform, und führen Sie Ihre Anwendung aus. Sie sollten genau wie in der IDE durch die Daten blättern können.

Siehe auch