Tutoriel mobile : Connexion à une base de données d'entreprise depuis un client mobile (iOS et Android)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Tutoriels mobiles : Développement d'applications mobiles (iOS et Android)


Avant de commencer ce tutoriel :

Ce tutoriel décrit comment se connecter à une base de données d'entreprise depuis une application client mobile.

Pour établir la connexion à une base de données d'entreprise, vous devez disposer d'une bibliothèque client. Dans la plupart des cas, la bibliothèque client est fournie par l'éditeur de la base de données au format DLL. Cette stratégie ne fonctionne pas correctement pour les périphériques mobiles car aucune bibliothèque client n'est disponible. Pour résoudre ce problème, vous pouvez développer un niveau intermédiaire pour établir la connexion à une base de données d'entreprise, et votre application peut communiquer avec le niveau intermédiaire.

RAD Studio fournit le framework DataSnap avec lequel vous pouvez développer le niveau intermédiaire (et y accéder) avec un minimum de codage. Ce tutoriel décrit les étapes de développement du niveau intermédiaire et du client mobile.

NTiersMobileAppDiagram.png

Création du niveau intermédiaire, un serveur DataSnap

Créez d'abord un serveur DataSnap qui expose une table d'un serveur de base de données. Ce tutoriel utilise une application Fiches VCL Serveur DataSnap en tant que serveur DataSnap.

Remarque : Dans ce tutoriel, le serveur DataSnap (application VCL) fonctionne comme le niveau intermédiaire dans une application de base de données multiniveau. Vous pouvez facilement créer puis supprimer par la suite une instance d'un serveur DataSnap. Dès que vous avez assimilé les étapes élémentaires, vous pouvez convertir le niveau intermédiaire en application de service Windows.

Créer une application VCL Serveur DataSnap

  1. Pour créer un nouveau projet Delphi ou C++, choisissez Fichier > Nouveau > Autre, puis dans le dialogue Nouveaux éléments sélectionnez :
    • Pour Delphi : Delphi Projets > Serveur DataSnap > Serveur DataSnap
    • Pour C++ : C++Builder Projets > Serveur DataSnap > Serveur DataSnap
    DSServer iOS1.png

  2. L'expert Nouveau serveur DataSnap apparaît :
    DSServer iOS2.png

    1. A la première étape, choisissez Application Fiches comme type de projet.
    2. A la deuxième étape, choisissez Application VCL comme type d'application.
    3. A la troisième étape, choisissez le protocole TCP/IP, Classe de méthodes serveur et Méthodes exemple dans la liste Fonctionnalités serveur.
    4. A la quatrième étape, laissez le port des communications TCP/IP par défaut sur 211. Cela garantira que la communication entre le client et le serveur passera par le port DataSnap par défaut.
    5. A la cinquième étape (la dernière), sélectionnez TDSServerModule en tant qu'ancêtre des méthodes serveur.
  3. Enregistrez l'unité de fiche sous DataSnapServerUnit.
  4. Basculez sur DataSnapServerUnit et définissez la propriété Name de la fiche sur DSServerForm.
  5. Enregistrez l'unité des méthodes serveur (valeurs par défaut, comme créé par l'expert : ServerMethodsUnit1) sous ServerModuleUnit.
  6. Enregistrez l'unité du conteneur serveur (valeurs par défaut, comme créé par l'expert : ServerContainerUnit1) sous ServerContainerUnit.
  7. Enregistrez le nouveau projet sous DataSnapServerProject.
  8. Sélectionnez ProjectGroup1 dans le Gestionnaire de projets et enregistrez le projet sous DataSnapTutorialProjectGroup.groupproj.
    SaveAsDataSnapTutorialProjectGroup.png


Définir un ensemble de données sur le serveur DataSnap

  1. Basculez sur le fichier ServerContainerUnit.pas et remplacez la clause uses dans l'implémentation par : uses Winapi.Windows, ServerModuleUnit, pour Delphi, et remplacez #include "ServerMethodsUnit.h" par #include "ServerModuleUnit.h" dans ServerContainerUnit.cpp, pour C++ ;
  2. Basculez sur le fichier ServerModuleUnit.pas.
  3. Dans le Concepteur de fiches, définissez la propriété Name du module serveur sur DSServerModule_EMPLOYEE.
  4. Configurez les composants suivants sur le module serveur :
    • Déposez un composant TSQLConnection sur le module serveur et définissez les propriétés suivantes :
      TSQLConnection encapsule une connexion dbExpress à un serveur de base de données.
      • Définissez la propriété Name sur SQLConnection_EMPLOYEE.
      • Définissez la propriété LoginPrompt sur False.
      • Définissez Driver sur InterBase Server.
      Remarque : Assurez-vous que le serveur InterBase fonctionne.
      • Développez le noeud Driver, et définissez la propriété DataBase sur C:\Utilisateurs\Public\Documents\Embarcadero\Studio\22.0\Samples\Data\EMPLOYEE.GDB.
      • Redéfinissez la propriété Connected sur True. Si vous obtenez une erreur, revérifiez les propriétés Driver :
        DefineConnectionToInterBase.png

    • Déposez un composant TSQLDataSet sur le module serveur, et définissez les propriétés suivantes :
      TSQLDataSet représente les données récupérées à l'aide de dbExpress.
      • Définissez la propriété Name sur SQLDataSet_EMPLOYEE.
      • Définissez la propriété SQLConnection sur SQLConnection_EMPLOYEE.
      • Définissez la propriété CommandType sur ctTable.
      • Définissez la propriété CommandText sur EMPLOYEE.
      • Redéfinissez la propriété Active sur True. Si vous obtenez une erreur, revérifiez les propriétés que vous venez de configurer.
    • Déposez un composant TDataSetProvider sur le module serveur et définissez les propriétés suivantes :
      TDataSetProvider conditionne les données d'un ensemble de données et transmet un ou plusieurs paquets de données transportables au client DataSnap.
      • Définissez la propriété Name sur DataSetProvider_EMPLOYEE.
      • Définissez la propriété DataSet sur SQLDataSet_EMPLOYEE :
      • ServerModuleUnit.png

Remarque : Ce tutoriel utilise InterBase en tant qu'exemple. Vous pouvez toutefois vous connecter à n'importe quel serveur de base de données en utilisant les mêmes étapes. Sélectionnez le pilote adéquat, ainsi que d'autres propriétés pour pointer sur votre base de données.

Exposer l'ensemble de données à partir du serveur DataSnap

Vous venez juste de créer un nouveau module serveur contenant un DataSet et un DataSetProvider qui conditionne les données dans la couche suivante. L'étape suivante expose le module serveur au client DataSnap.

  1. Dans le Concepteur de fiches, ouvrez ServerContainerUnit.
  2. Sélectionnez DSServerClass1 et mettez à jour le gestionnaire d'événement existant pour l'événement OnGetClass. Ajoutez le code suivant au gestionnaire d'événement DSServerClass1 :

Delphi :

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

C++ (seulement pour iOS) :

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

Avec ce gestionnaire d'événement, le serveur DataSnap expose les fournisseurs ainsi que les méthodes publiques de cette classe au client DataSnap. Compte tenu des étapes de la section précédente, vous allez maintenant exposer le composant DataSetProvider_EMPLOYEE DataSetProvider à votre client DataSnap.

Exécuter le serveur DataSnap

L'implémentation du serveur DataSnap est terminée. Cliquez avec le bouton droit sur DataSnapServerProject.exe et sélectionnez Exécuter sans débogage.

RunDataSnapServerProjectWihoutDebugging.png.

Vous pouvez maintenant voir le serveur DataSnap s'exécuter sur votre machine Windows. Puisque ce serveur DataSnap n'a pas d'élément d'interface utilisateur, il ressemble à une fiche vide et c'est ce qui est prévu à ce stade.

RunDataSnapServerRunningOnWindows.png

Création d'une application mobile qui se connecte au serveur DataSnap

L'étape suivante consiste à créer l'application client mobile.

  1. Dans le Gestionnaire de projets, cliquez avec le bouton droit sur DataSnapTutorialProjectGroup et sélectionnez Ajouter un nouveau projet.
    AddNewProjectToDataSnapTutorialProjectGroup.png

  2. Sélectionnez Application multi-périphérique sur la page Projets Delphi :
    SelectFireMonkeyMobileApplication.png

  3. Enregistrez la nouvelle unité sous DataSnapClientUnit.
  4. Enregistrez le nouveau projet sous DataSnapClientProject.
  5. Ouvrez DataSnapClientUnit et redéfinissez la propriété Name de la fiche sur DSClientForm.
  6. Déposez les composants suivants sur le Concepteur de fiches :
    • Composant TSQLConnection (SQLConnection1)
      TSQLConnection encapsule une connexion dbExpress à un serveur de base de données. Il supporte aussi le serveur DataSnap.
      • Définissez la propriété Driver sur DataSnap.
      • Développez la propriété Driver et définissez la propriété HostName sur le nom d'hôte du serveur DataSnap.
      • Définissez la propriété LoginPrompt sur False.
      • Définissez la propriété Connected sur True.
        Si vous obtenez une erreur, vérifiez les propriétés que vous venez de définir.
    • Composant TDSProviderConnection (DSProviderConnection1)
      Le composant TDSProviderConnection fournit la connectivité au serveur DataSnap en utilisant dbExpress.
      • Définissez la propriété SQLConnection sur SQLConnection1.
      • Définissez ServerClassName sur TDSServerModule_EMPLOYEE. Ce nom doit correspondre au nom de la classe du module serveur du serveur DataSnap.
      • Définissez la propriété Connected sur True.
    • Composant TClientDataSet (ClientDataSet1)
      TClientDataSet implémente un ensemble de données indépendant de la base de données, utilisable en tant que tampon mémoire local des enregistrements d'un autre ensemble de données.
      • Définissez la propriété RemoteServer sur DSProviderConnection1.
      • Définissez la propriété ProviderName surDataSetProvider_EMPLOYEE. Ce nom doit correspondre au nom du fournisseur du serveur DataSnap.
      • Définissez la propriété Active sur True.
    • Composant TListBox
      • Définissez la propriété Align sur Client.
    Configure iOSDataSnapClient.png

  7. Ouvrez le Concepteur LiveBindings et connectez les données et l'interface utilisateur comme suit :
    1. Cliquez sur FULL_NAME dans BindSourceDB1 et déplacez le curseur de la souris sur Item.Text dans ListBox1 :
      ConnectFullNameToItemText.png

    2. Vous avez à présent créé et configuré le client DataSnap sur la plate-forme mobile. Vous devriez voir les données provenant du serveur DataSnap dans l'EDI :

iOS

Android

DSClientCompleted.png    DSClientCompletedAndroid.png  

Déployer la bibliothèque MIDAS sur le simulateur iOS

Pour exécuter votre application sur le simulateur iOS, vous devez déployer les fichiers suivants :

  • Bibliothèque MIDAS
  1. Ouvrez le Gestionnaire de déploiement en sélectionnant Projet > Déploiement.
  2. Sélectionnez Ajouter des fichiers spécifiques (DMgrAddFeatFiles.png) :
    AddingFeaturedFiles.png

  3. Sélectionnez le module suivant, puis cliquez sur OK pour fermer le Gestionnaire de déploiement :
    • Bibliothèque MIDAS
      SelectingMIDASFeaturedFiles.png

Exécuter votre application sur la plate-forme mobile

Votre application est maintenant prête pour l'exécution.

Dans le Gestionnaire de projets, sélectionnez la plate-forme cible mobile et exécutez votre application. Vous devriez être en mesure de parcourir les données de la même façon que dans l'EDI.

Voir aussi