Déboguer votre base de données avec l'outil d'inspection de bases de données

Dans Android Studio 4.1 et versions ultérieures, l'outil d'inspection de bases de données vous permet d'inspecter, d'envoyer des requêtes et de modifier les bases de données de votre application pendant son exécution. Cela est particulièrement utile pour le débogage de bases de données. L'outil d'inspection de bases de données fonctionne avec SQLite standard et avec des bibliothèques basées sur SQLite, telles que Room.

Ouvrir l'outil d'inspection de bases de données

Pour ouvrir une base de données dans l'outil d'inspection de bases de données, procédez comme suit :

  1. Exécutez votre application sur un émulateur ou un appareil connecté avec un niveau d'API 26 ou supérieur.

  2. Sélectionnez Affichage > Fenêtres d'outils > Inspection des applications dans la barre de menu.

  3. Sélectionnez l'onglet Outil d'inspection de bases de données.

  4. Sélectionnez le processus d'application en cours d'exécution dans le menu déroulant.

  5. Les bases de données de l'application en cours d'exécution apparaissent dans le volet Bases de données. Développez le nœud de la base de données que vous souhaitez inspecter.

Afficher et modifier les données

Le volet Bases de données affiche la liste des bases de données de votre application, ainsi que les tables contenues dans chaque base de données. Double-cliquez sur le nom d'une table pour afficher ses données dans la fenêtre de l'outil d'inspection, à droite. Vous pouvez cliquer sur un en-tête de colonne pour trier les données de la fenêtre de l'outil d'inspection de cette colonne.

Capture d'écran de la fenêtre de l'outil d'inspection de bases de données.
Figure 1 : Fenêtre de l'outil d'inspection de bases de données

Vous pouvez modifier les données d'une table en double-cliquant sur une cellule, puis en saisissant une nouvelle valeur et en appuyant sur Entrée. Si votre application utilise Room et que votre interface utilisateur observe la base de données (par exemple, avec LiveData ou Flow), toutes les modifications que vous apportez aux données sont immédiatement visibles dans l'application en cours d'exécution. Sinon, les modifications ne seront visibles que la prochaine fois que votre application lira les données modifiées de la base de données.

Voir les modifications en direct de la base de données

Si vous souhaitez que l'outil d'inspection de bases de données mette automatiquement à jour les données qu'il présente lors de vos interactions avec votre application en cours d'exécution, cochez la case Modifications en direct en haut de la fenêtre de l'outil d'inspection. Lorsque les modifications en direct sont activées, la table de la fenêtre de l'outil d'inspection passe en lecture seule, et vous ne pouvez pas modifier ses valeurs.

Vous pouvez également mettre à jour manuellement les données en cliquant sur le bouton Actualiser la table en haut de la fenêtre de l'outil d'inspection.

Rechercher dans vos bases de données

L'outil d'inspection de bases de données peut exécuter des requêtes sur la base de données de votre application pendant son exécution. L'outil peut utiliser des requêtes DAO si votre application utilise Room, mais il est également compatible avec les requêtes SQL personnalisées.

Exécuter des requêtes DAO

Si votre application utilise Room, Android Studio propose des actions dans la marge qui vous permettent d'exécuter rapidement des méthodes de requête que vous avez déjà définies dans vos classes DAO. Ces actions sont disponibles pendant que votre application s'exécute et que l'outil d'inspection de bases de données est ouvert dans l'IDE. Vous pouvez exécuter n'importe quelle méthode de requête dans un DAO en cliquant sur le bouton Exécuter l'instruction SQLite dans l'outil d'inspection de bases de données situé à côté de l'annotation @Query.

Capture d'écran des actions DAO dans la marge.
Figure 2 : Actions de requête DAO dans la marge.

Si votre application comprend plusieurs bases de données, Android Studio vous invite à sélectionner la base de données dans laquelle rechercher dans une liste déroulante. Si votre méthode de requête inclut des paramètres de liaison nommés, Android Studio demandera des valeurs pour chaque paramètre avant d'exécuter la requête. Les résultats de la requête sont affichés dans la fenêtre de l'outil d'inspection.

Exécuter des requêtes SQL personnalisées

Vous pouvez également utiliser l'outil d'inspection de bases de données pour exécuter des requêtes SQL personnalisées sur les bases de données de votre application pendant son exécution. Pour rechercher dans une base de données, procédez comme suit :

  1. Cliquez sur Ouvrir un nouvel onglet de requête en haut du volet Bases de données pour ouvrir un nouvel onglet dans la fenêtre de l'outil d'inspection.

    Capture d'écran indiquant le bouton Nouvel onglet de requête.
    Figure 3 : Ouvrez un onglet Nouvelle requête.
  2. Si votre application comprend plusieurs bases de données, sélectionnez-la dans la liste déroulante de l'onglet Nouvelle requête.

  3. Saisissez votre requête SQL personnalisée dans le champ de texte en haut de l'onglet Nouvelle requête, puis cliquez sur Exécuter.

Vous pouvez également utiliser la fonctionnalité d'historique des requêtes pour exécuter une requête que vous avez utilisée précédemment :

  1. Cliquez sur le bouton Afficher l'historique des requêtes Bouton Afficher l'historique des requêtes pour afficher la liste des requêtes que vous avez précédemment exécutées sur la base de données sélectionnée.

    Capture d'écran montrant la liste déroulante de l'historique des requêtes.
    Figure 4 : Menu de l'historique des requêtes
  2. Cliquez sur une requête de la liste pour afficher un aperçu de la requête complète dans l'éditeur, puis appuyez sur Entrée pour la copier dans l'éditeur.

  3. Cliquez sur Exécuter pour exécuter l'instruction.

Les résultats de requête affichés dans l'onglet Nouvelle requête sont en lecture seule et ne peuvent pas être modifiés. Toutefois, vous pouvez utiliser le champ de requête SQL personnalisé pour exécuter des instructions de modificateur telles que UPDATE, INSERT ou DELETE. Si votre application utilise Room et que votre interface utilisateur observe la base de données (par exemple, avec LiveData ou Flow), toutes les modifications que vous apportez aux données sont immédiatement visibles dans l'application en cours d'exécution. Sinon, les modifications ne seront visibles que la prochaine fois que votre application lira les données modifiées de la base de données.

Mode hors connexion

Dans Android Studio 4.2 ou version ultérieure, vous pouvez continuer à inspecter les bases de données de votre application après la déconnexion d'un processus. Cela facilite le débogage de votre application après un plantage.

En cas de déconnexion, l'outil d'inspection de bases de données télécharge vos bases de données et les met à votre disposition en mode hors connexion. Lorsque vous êtes hors connexion, vous pouvez toujours ouvrir des tables et exécuter des requêtes.

Lorsque vous vous reconnectez à un processus d'application en direct, l'outil d'inspection de bases de données quitte le mode hors connexion et n'affiche que les données de l'appareil. En d'autres termes, les données affichées en mode hors connexion ne sont pas conservées lorsque vous vous reconnectez à un processus d'application. En raison de cette limitation, l'outil d'inspection de bases de données ne vous permet pas de modifier des données ni d'exécuter des instructions de modification SQL en mode hors connexion.

Garder les connexions à la base de données ouvertes

L'outil d'inspection de base de données ne peut modifier une base de données que pendant que votre application maintient une connexion en direct à celle-ci. Par conséquent, si votre application se connecte et se déconnecte fréquemment à des bases de données, il peut être difficile de déboguer ces bases de données. Le volet Bases de données utilise des icônes pour identifier les bases de données ouvertes () et fermées ().

Vous pouvez également empêcher la fermeture des connexions à la base de données en passant l'option Laisser les connexions à la base de données ouvertes de désactivée () à activée (). en haut du volet Bases de données.

Exporter des données à partir de l'outil d'inspection de bases de données

Vous pouvez exporter des bases de données, des tables et des résultats de requête à partir de l'outil d'inspection de base de données pour les enregistrer, les partager ou les recréer localement. Lorsque vous ouvrez un projet d'application dans Android Studio et que vous inspectez l'application pour ce projet dans l'outil d'inspection de base de données, vous pouvez commencer à exporter des données de l'une des manières suivantes :

  • Sélectionnez une base de données ou une table dans le volet Bases de données, puis cliquez sur Exporter vers un fichier en haut du panneau.
  • Effectuez un clic droit sur une base de données ou une table dans le panneau Bases de données, puis sélectionnez Exporter vers un fichier dans le menu contextuel.
  • Lorsque vous inspectez les résultats d'une table ou d'une requête dans un onglet, cliquez sur Exporter vers un fichier au-dessus des résultats de la table ou de la requête.

Après avoir sélectionné une action d'exportation, utilisez la boîte de dialogue Exporter pour vous guider lors des dernières étapes, comme indiqué ci-dessous. Selon que vous essayez d'exporter une base de données, une table ou des résultats de requête, vous pouvez exporter les données dans un ou plusieurs des formats suivants : DB, SQL ou CSV.

Boîte de dialogue Exporter une base de données

Ressources supplémentaires

Pour en savoir plus sur l'outil d'inspection de base de données, consultez les ressources supplémentaires suivantes :

Articles de blog

Vidéos