Tutoriel mobile : Utilisation de InterBase ToGo avec FireDAC (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, il est recommandé de lire et suivre le tutoriel suivant :

Conseil : Pour suivre ce tutoriel, vous devez disposer d'une licence pour IBToGo ou IBLite :

  • Si vous avez acheté l'une des versions suivantes de RAD Studio, vous avez reçu par email une clé de licence de développement et de déploiement illimitée pour IBLite :
    • RAD Studio Sydney Professional ou version supérieure (Toutes éditions)
    • Delphi Sydney Professional with Mobile ou version supérieure
  • Si vous utilisez une version d'évaluation, votre installation comprend une licence d'évaluation pour IBToGo. Vous pouvez tester InterBase sur iOS et Android en sélectionnant votre licence de test lors de la phase de déploiement, comme expliqué dans ce tutoriel. Les licences d'évaluation sont installées avec votre produit d'évaluation dans C:\Utilisateurs\Public\Documents\Embarcadero\InterBase\redist\InterBase2020.


Suivez les étapes de Licences Test Deployment IBLite et IBToGo pour obtenir votre fichier de licence et l'installer.

Remarque : Sur les périphériques Android, les apps InterBase ToGo requièrent l'activation de permissions spécifiques, plus particulièrement :
  • Lire le stockage externe (la base de données est placée dans la mémoire externe)
  • Ecrire le stockage externe (la base de données est placée dans la mémoire externe)
  • Internet (vous devez établir la connexion avec un serveur distant)

Ce tutoriel décrit les étapes élémentaires permettant de parcourir les données gérées par InterBase ToGo sur vos périphériques iOS et Android à travers le framework FireDAC.

iOS Android

DBDemo iPod Runtime.png

DBDemo Runtime.png

Remarque : Vous pouvez utiliser les composants FireDAC, dbExpress, et Interbase Express (IBX) pour construire des applications Interbase ToGo. Pour en savoir plus sur l'utilisation des composants Interbase Express dans une application Delphi, lisez l'article Introduction à InterBase Express. Pour ce tutoriel, nous allons nous connecter à Interbase ToGo par le biais de FireDAC.

Utilisation de FireDAC pour se connecter à la base de données

FireDAC est un ensemble unique de composants d'accès aux données universel conçus pour le développement d'applications de bases de données multiplates-formes pour Delphi et C++Builder. Grâce à son architecture commune, FireDAC permet un accès direct, rapide et natif de Delphi vers InterBase, SQLite, MySQL, SQL Server, Oracle, PostgreSQL, IBM DB2, SQL Anywhere, Access, Firebird, Informix, et bien d'autres.

  • Pour les plates-formes mobiles, FireDAC prend en charge InterBase ToGo ainsi que SQLite. Ces produits de base de données peuvent s'exécuter sur les périphériques iOS et Android.
  • Pour les autres bases de données, telles que Oracle, vous devez disposer d'au moins une bibliothèque client. Sur les plates-formes Windows, la bibliothèque client est fournie en tant que DLL sur laquelle se connecter. Par conséquent, vous devez développer les applications en utilisant des technologies de niveau intermédiaire telles que DataSnap pour la connexion à ces produits de base de données à partir d'un périphérique mobile.
Un autre tutoriel décrit comment se connecter à une base de données d'entreprise sans utiliser de bibliothèque client sur un périphérique mobile ; voir Tutoriel mobile : Connexion à une base de données d'entreprise depuis un client mobile (iOS et Android).

Conception et configuration de l'interface utilisateur

Ce tutoriel utilise les composants TListView et TPanel comme éléments de l'interface utilisateur.

Pour configurer un composant TListView et un composant TPanel, suivez les étapes ci-après :

  1. Pour créer une application multi-périphérique HD, sélectionnez l'une des options suivantes :
    • Fichier > Nouveau > Application multi-périphérique - Delphi > Application vide
    • Fichier > Nouveau > Application multi-périphérique - C++Builder > Application vide
  2. Déposez un composant TListView sur la fiche.
  3. Dans l'inspecteur d'objets, définissez les propriétés suivantes du TListView :
    • Définissez la propriété Align sur Client afin que le composant ListView utilise la fiche entière.
    • Définissez la propriété ItemAppearance sur ListItemRightDetail.
    • Définissez la propriété SearchVisible sur true.
  4. Ajoutez un composant TPanel sur la fiche puis, dans l'inspecteur d'objets, définissez les propriétés suivantes :
    • Définissez la propriété Align du composant TPanel sur Top.
  5. Ajoutez un composant TLabel au volet puis, dans l'inspecteur d'objets, définissez les propriétés suivantes :
    • Définissez la propriété Align du composant TLabel sur Client.
    • Définissez les vues sur iOS ou Android.
    • Définissez la propriété StyleLookup sur listboxitemlabel.
    • Redéfinissez les vues sur Maître.
    • Définissez la propriété HorzAlign dans TextSettings sur Center.
    • Définissez la propriété Text sur DB DEMO.

Connexion aux données

Voici les étapes fondamentales permettant de se connecter aux données d'une base de données au moyen de FireDAC :

  1. Sur la palette d'outils, double-cliquez sur le composant TFDConnection.
    FDConnectionComp.png
  2. Cliquez avec le bouton droit sur le composant TFDConnection et choisissez Editeur de connexion.
  3. Dans l'éditeur de connexion FireDAC, définissez les paramètres suivants du composant TFDConnection :
    1. Définissez la propriété Driver ID sur IB.
    2. Définissez le paramètre Database sur :
      C:\Utilisateurs\Public\Documents\Embarcadero\Studio\21.0\Samples\Data\dbdemos.gdb (emplacement de la base de données)
      et cliquez sur Ouvrir dans la boîte de dialogue d'ouverture de fichier.
    3. Définissez le paramètre User_name sur sysdba.
    4. Définissez le paramètre Password sur masterkey.
    5. Définissez le paramètre Protocol sur TCPIP.
      FDConnectionEditor.png

    6. Cliquez sur le bouton Tester pour tester la connexion.
    7. Cliquez sur OK pour fermer l'éditeur de connexion.
  4. Dans l'inspecteur d'objets, définissez les propriétés suivantes du TFDConnection :
    1. Définissez la propriété LoginPrompt sur False, afin que l'utilisateur ne reçoive pas d'invite de connexion.
    2. Définissez la propriété Connected sur True.
      Remarque : Si vous obtenez une erreur ("base de données indisponible") dans l'environnement de développement, cela signifie que vous ne disposez pas d'une licence en cours pour InterBase. Une licence InterBase Developer Edition est incluse en tant que partie du produit pour certaines éditions du produit. Pour plus d'informations, voir Dépannage.
  5. Ajoutez un composant TFDQuery sur la fiche.
  6. Cliquez avec le bouton droit sur le composant TFDQuery et choisissez Editeur de connexion.
    1. Dans l'éditeur de texte SQL Command, écrivez select COMMON_NAME, SPECIES_NAME from BIOLIFE order by COMMON_NAME.
    2. Cliquez sur le bouton Exécuter pour voir les résultats de la commande.
      FDQueryCommandDBDemo.png

    3. Cliquez sur OK pour fermer l'éditeur de requête.
  7. Dans l'inspecteur d'objets, définissez la propriété Active du composant TFDQuery sur True.
  8. Ouvrez le Concepteur LiveBindings et connectez les données et l'interface utilisateur comme suit :
    1. Cliquez sur COMMON_NAME dans FDQuery1 et déplacez le curseur de la souris sur Item.Text dans ListView1.
      LiveBindingsDesignerCommon Name.png

      A ce stade, les composants TBindSourceDB et TBindingsList ont été ajoutés sur la fiche.
    2. Cliquez sur SPECIES_NAME dans BindSourceDB1 et déplacez le curseur de la souris sur Item.Detail dans ListView1.
      DBDemoDesignTime.png
  9. Ajoutez un composant TFDPhysIBDriverLink sur la fiche.
  10. Ajoutez un composant TFDGUIxWaitCursor sur la fiche.
Remarque : La rubrique Préparation d'une application FireDAC pour l'exécution explique l'utilisation des composants TFDGUIxWaitCursor et TFDPhysIBDriverLink dans une application FireDAC.

Déploiement de votre application sur un environnement mobile

Jusqu'ici, vous avez utilisé InterBase sur votre bureau. Cela signifie que la base de données réelle est située sur votre disque dur local (par exemple, C:\Utilisateurs\Public\Documents\Embarcadero\Studio\21.0\Samples\Data\dbdemos.gdb). Sur le périphérique mobile, l'application réside dans le Sandbox, et vous pouvez typiquement lire et écrire seulement les données qui sont situées dans le dossier Documents (pour un périphérique iOS) et dans le stockage interne (pour un périphérique Android) sous votre dossier d'application.

Pour établir une connexion à une base de données locale sur un mobile, vous devez effectuer les actions suivantes :

  • Déployer la base de données sur le périphérique mobile.
  • Contrôler la configuration (pour se connecter au fichier de base de données) en choisissant un fichier local sous le dossier Documents (pour un périphérique iOS) ou dans le stockage interne (pour un périphérique Android).

Déployer les fichiers InterBase ToGo requis et le fichier de base de données sur un environnement mobile

Pour exécuter votre application sur un mobile, vous devez déployer les fichiers suivants :

  • Fichiers Interbase ToGo requis (fichier de licence et autres fichiers de configuration)
  • Le fichier de base de données (dbdemos.gdb)

Déployez ces fichiers dans votre application de la manière suivante :

  1. Vous pouvez ajouter la base de données à votre projet à l'aide de l'une des deux méthodes suivantes :
    • Cliquez avec le bouton droit sur le nom du projet dans le Gestionnaire de projets et sélectionnez Ajouter… dans le menu contextuel (ou Projet > Ajouter au projet) pour afficher la boîte de dialogue Ajouter au projet. Naviguez jusqu'à l'emplacement de base de données C:\Utilisateurs\Public\Documents\Embarcadero\Studio\21.0\Samples\Data, sélectionnez la base de données dbdemos.gdb et cliquez sur Ouvrir.
    • Naviguez jusqu'à l'emplacement de base de données C:\Utilisateurs\Public\Documents\Embarcadero\Studio\21.0\Samples\Data, puis faites glisser et déposez la base de données dbdemos.gdb vers le projet dans le Gestionnaire de projets. Cliquez sur Oui pour confirmer que vous souhaitez ajouter le fichier à votre projet.
  2. Une fois le fichier de base de données ajouté, la fenêtre Fichiers spécifiques apparaît. Sélectionnez InterBase ToGo dans Fichiers spécifiques, puis cliquez sur OK pour fermer la boîte de dialogue Fichiers spécifiques.
    • Sous le noeud InterBase ToGo, vous devez sélectionner la licence à utiliser lorsque vous déployez l'application sur le périphérique.
      • Le Conseil au début de ce tutoriel décrit comment activer une licence InterBase.
      • Les noms suggérés pour les fichiers de licence sont listés dans la boîte de dialogue Fichiers spécifiques et suivent le modèle suivant : reg_*.txt.
        Comme vous pouvez le voir dans l'image ci-dessous, le fichier licence reg_ibtogo.txt est sélectionné pour ce tutoriel.
      • Il se peut que Embarcadero vous ait envoyé un fichier licence pour IBToGo ou IBLite ayant un modèle tel que reg_nnnnnnn.txt, où nnnnnnn est un nombre généré :
        • Si vous avez enregistré ce fichier sous le nom reg_ibtogo.txt ou reg_iblite.txt à l'emplacement ci-dessous (par exemple, C:\Utilisateurs\Public\Documents\Embarcadero\InterBase\redist\InterBase2020), il vous suffit de sélectionner la licence voulue.
        • Si vous avez enregistré le fichier sous son nom original, sélectionnez Ajouter des fichiers (expliqué dans l'étape suivante) et ajoutez le fichier licence à la liste des fichiers devant être déployés avec l'application.
    FeaturedFilesiOSAndroidDB.png

  3. Ouvrez le Gestionnaire de déploiement en sélectionnant Projet > Déploiement.
  4. Sélectionnez Configuration Débogage - Périphérique iOS - Plate-forme 32 bits, Configuration Débogage - Périphérique iOS - Plate-forme 64 bits ou Configuration Débogage - Plate-forme Android dans la liste déroulante des plates-formes cible en haut du Gestionnaire de déploiement ; vous pouvez constater que la base de données dbdemos.gdb a été ajoutée aux plates-formes.
  5. Notez de quelle manière le chemin distant de dbdemos.gdb a été défini pour les plates-formes iOS et Android :
    • Chemin distant sur la plate-forme Périphérique iOS : StartUp\Documents\
    ChangeToStartUpDocuments.png
    • Chemin distant sur la plate-forme Android : assets\internal\
    AddDBforAndroidAssets.png

Conformément à la configuration définie, quand vous exécutez l'app sur le périphérique mobile, le fichier de base de données (dbdemos.gdb) est déployé dans le dossier Documents (pour la plate-forme iOS) ou dans le stockage interne (pour la plate-forme Android) de la zone sandbox de votre application multi-périphérique.

Pour le TFDConnection, créez le gestionnaire d'événement BeforeConnect de la manière suivante :

  1. Dans le Concepteur de fiches, sélectionnez le composant TFDConnection.
  2. Dans l'inspecteur d'objets, accédez à l'onglet Evénements et double-cliquez sur l'événement BeforeConnect.
  3. Implémentez le gestionnaire d'événement pour l'événement BeforeConnect en ajoutant le code suivant :
    • Pour 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;
    

    L'enregistrement TPath est déclaré dans l'unité System.IOUtils. Vous devez donc ajouter System.IOUtils à la clause uses, comme suit :

    implementation
    
    {$R *.fmx}
    {$R *.NmXhdpiPh.fmx ANDROID}
    {$R *.iPhone4in.fmx IOS}
    
    uses System.IOUtils;
    
    procedure TForm1.FDConnection1BeforeConnect(Sender: TObject);
    //  previous code goes here
    
    • Pour 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
    }
    

    Vous devez ajouter #include <System.IOUtils.hpp> dans l'unité (fichier .cpp).

Exécuter votre application sur un simulateur ou un périphérique mobile

Maintenant, votre application est prête à être exécutée (Exécuter > Exécuter ou appuyez sur F9). Vous devriez être en mesure de parcourir les données de la même façon que dans l'EDI. Vous pouvez réduire la liste en utilisant la zone de recherche.

iOS Android

IPodSearchDBDemo.png

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

Dépannage

Problèmes InterBase

Pour des informations détaillées sur les problèmes de licences InterBase, voir la section suivante.

Remarque : Suivez les étapes de Licences Test Deployment IBLite et IBToGo pour obtenir un fichier de licence valide.

Problèmes de gestion des exceptions

Si votre application déclenche une exception sans disposer d'un code de gestion d'exception adéquat, votre application multi-périphérique se bloque simplement (disparaît) à l'exécution.

En présence d'un blocage, vous pouvez vous connecter manuellement à la base de données pendant la résolution du problème par le biais des étapes suivantes :

  1. Sélectionnez le composant FDConnection1 et définissez la propriété Connected sur False.
  2. Déposez un bouton sur la fiche et créez le gestionnaire d'événement suivant pour établir une connexion manuelle à la base de données :
    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);
        }
    }
    
  3. Vérifiez le message d'erreur.

Voir aussi

Exemples