Tutoriel mobile : Utilisation de InterBase ToGo avec dbExpress (iOS et Android)

De RAD Studio
Aller à : navigation, rechercher

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


YellowBang.png Attention : dbExpress, qui est décrit dans ce tutoriel, va devenir obsolète. Cela signifie que dbExpress sera supprimé de RAD Studio dans une prochaine release.
A la place de dbExpress, nous vous recommandons d'utiliser notre dernière solution de base de données, FireDAC, qui est décrite dans un tutoriel similaire, ici :
Tutoriel mobile : Utilisation de InterBase ToGo avec FireDAC (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 de 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 Tokyo Professional ou version supérieure (Toutes éditions)
    • Delphi Tokyo 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\InterBaseXE7.
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 dbExpress.

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 du framework dbExpress.

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

dbExpress est un framework d'accès aux bases de données très rapide, écrit en Delphi. RAD Studio fournit des pilotes pour la plupart des bases de données majeures, telles que InterBase, Oracle, DB2, SQL Server, MySQL, Firebird, SQLite et ODBC. Vous pouvez accéder à ces diverses bases de données en utilisant des procédures similaires à la procédure décrite ici.

  • Pour les plates-formes mobiles, dbExpress 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 à la 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 ListView :
    • Définissez la propriété Align sur Client, pour 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 la propriété StyleLookup sur toollabel.
    • Définissez la propriété HorzAlign de 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 dbExpress :

  1. Sur la palette d'outils, double-cliquez sur le composant TSQLConnection.
    SelectSqlConnection.png
  2. Dans l'inspecteur d'objets, définissez les propriétés suivantes pour TSQLConnection :
    1. Cette application utilise InterBase ToGo. Définissez la propriété Driver sur IBLite/ToGo.
      SelectDriverForSQLConnection.png
    2. Définissez la propriété LoginPrompt sur False, afin que l'utilisateur ne reçoive pas d'invite de connexion.
    3. Cliquez sur les points de suspension [...] pour la propriété Params et définissez la valeur Database sur C:\Utilisateurs\Public\Documents\Embarcadero\Studio\19.0\Samples\Data\dbdemos.gdb (emplacement de la base de données).
    4. Vérifiez que la valeur VendorLib est définie sur ibtogo.dll (bibliothèque de logiciels clients) ; puis cliquez sur OK pour fermer la boîte de dialogue :
      ValueListEditor2.png

    5. Définissez la propriété Connected sur True.
      Remarque : Si vous obtenez une erreur ("base de données indisponible") sur 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.
  3. Ajoutez un composant TSQLDataSet sur la fiche, puis définissez les propriétés suivantes :
    1. Définissez la propriété SQLConnection sur SQLConnection1 (celle ajoutée dans une étape précédente).
    2. Définissez la propriété CommandText sur select COMMON_NAME, SPECIES_NAME from BIOLIFE order by COMMON_NAME.
    3. Définissez la propriété Active sur True.
  4. Ouvrez le Concepteur LiveBindings et connectez les données et l'interface utilisateur comme suit :
    1. Cliquez sur COMMON_NAME dans SQLDataSet1, et déplacez le curseur de la souris sur Item.Text dans ListView1.
      CommonName ListView.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.
      DBDemo LiveBindingsDesigner.png

Déploiement de votre application sur un 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\19.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.
  • Vérifier 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 InterBase ToGo, le pilote dbExpress et le fichier de base de données sur un mobile

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

  • Interbase ToGo
  • Le pilote dbExpress InterBase (pour le simulateur iOS)
  • Le fichier de base de données (dbdemos.gdb)
  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\19.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\19.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 les modules de base de données suivants, puis cliquez sur OK pour fermer la boîte de dialogue Fichiers spécifiques :
    • 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\InterBaseXE7), 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.
    • Pilote DBExpress InterBase
    Conseil : Si vous prévoyez de tester votre application sur le simulateur iOS, vous devez aussi sélectionner le pilote DBExpress InterBase pour le simulateur iOS.
    FeaturedFilesiOSAndroidDB.png

  3. Ouvrez le Gestionnaire de déploiement en sélectionnant Projet > Déploiement.
  4. Dans la liste déroulante des plates-formes cible en haut du Gestionnaire de déploiement, sélectionnez Configuration de débogage - Plate-forme Périphérique iOS ou Configuration de débogage - Plateforme Android. 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.

Modifier votre code pour se connecter à un fichier de base de données local sur un mobile

Comme décrit dans l'étape précédente, le composant TSQLConnection est connecté à une base de données sur votre système de fichiers local avec un chemin absolu. Vous devez donc remplacer l'emplacement du fichier avant d'établir la connexion à la base de données, comme suit :

  1. Dans le Concepteur de fiches, sélectionnez le composant SQLConnection1.
  2. Dans l'inspecteur d'objets, double-cliquez sur le champ Valeur de l'événement BeforeConnect.
  3. Ajoutez le code suivant à ce gestionnaire d'événement :

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
}

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

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

Votre application est maintenant prête pour l'exécution. 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 SQLConnection1 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
        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. Vérifiez le message d'erreur.

Voir aussi