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

L'outil d'inspection de bases de données vous permet d'inspecter, d'interroger et de modifier les bases de données de votre application pendant son exécution. Il est particulièrement utile pour déboguer des 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é exécutant le niveau d'API 26 ou supérieur.

  2. Dans la barre de menu, sélectionnez View > Tool Windows > App Inspection (Affichage > Fenêtres d'outils > Inspection des applications).

  3. Sélectionnez l'onglet Database Inspector (Outil d'inspection de bases de données).

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

  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, comme illustré à la figure 1. Cliquez sur un en-tête de colonne pour trier les données de la fenêtre de l'outil d'inspection en fonction 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

Pour modifier les données d'une table :

  1. Double-cliquez sur une cellule.
  2. Saisissez une nouvelle valeur.
  3. Appuyez sur Enter (Entrée).

Si votre application utilise Room et que votre interface utilisateur observe la base de données (avec LiveData ou Flow, par exemple), 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 Live updates (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 Refresh table (Actualiser la table) en haut de la fenêtre de l'outil d'inspection.

Interroger 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.

Pour exécuter une méthode de requête dans un DAO, cliquez sur le bouton Run SQLite statement in Database Inspector (Exécuter l'instruction SQLite dans l'outil d'inspection de bases de données)  à 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 à interroger dans une liste. 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 interroger une base de données, procédez comme suit :

  1. Cliquez sur Open New Query tab (Ouvrir un onglet Nouvelle requête) en haut du volet Databases (Bases de données) pour ouvrir un nouvel onglet dans la fenêtre de l'outil d'inspection.

    Capture d'écran montrant l'onglet Nouvelle requête.
    Figure 3 : Ouvrez un onglet New Query (Nouvelle requête)
  2. Si votre application comprend plusieurs bases de données, sélectionnez celle que vous voulez interroger dans la liste de l'onglet New Query (Nouvelle requête).

  3. En haut de l'onglet New Query (Nouvelle requête), dans le champ de texte, saisissez votre requête SQL personnalisée.

  4. Cliquez sur Run (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 Show query history (Afficher l'historique des requêtes) Bouton Show query history (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 Enter (Entrée) pour la copier dans l'éditeur.

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

Les résultats de requête affichés dans l'onglet New Query (Nouvelle requête) sont en lecture seule et ne peuvent pas être modifiés. Vous pouvez cependant 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 (avec LiveData ou Flow, par exemple), 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. Autrement dit, 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.

Lorsque vous affichez une base de données en mode hors connexion, le nom du processus inclut [DETACHED] pour indiquer que l'outil d'inspection n'est plus connecté au processus. De plus, l'icône de base de données Base de données hors connexion indique l'état hors connexion, comme illustré dans la figure 5.

Outil d'inspection de bases de données en mode hors connexion
Figure 5 : Outil d'inspection de bases de données en mode hors connexion

Laisser 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 Databases (Bases de données) utilise des icônes pour identifier les bases de données ouvertes () et fermées ().

De plus, pour éviter la fermeture de connexions à des bases de données, basculez l'option Keep database connections open (Laisser les connexions à la base de données ouvertes) de désactivé  à activé  en haut du volet Databases (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 depuis l'outil d'inspection de bases 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 bases 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 Databases (Bases de données), puis cliquez sur Export to file (Exporter vers un fichier) en haut du panneau.
  • Effectuez un clic droit sur une base de données ou une table dans le panneau Databases (Bases de données), puis sélectionnez Export to file (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 Export to file (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 Export Database (Exporter une base de données) pour réaliser les dernières étapes, comme illustré à la figure 6.

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"

Figure 6 : 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