Database Inspector : qu'est-ce que c'est, comment travailler avec SQLite et déboguer Room

Auteur : IT Sectr Publié le : 2026-05-07 Temps de lecture : 8 min

Database Inspector dans Android Studio est un outil intégré pour visualiser et déboguer les bases de données SQLite d'une application mobile en temps réel. Selon la documentation officielle d'Android Developers (2025), l'outil permet d'exécuter des requêtes SQL sur la base active, de visualiser la structure des tables et de modifier les enregistrements sans arrêter l'application. L'outil prend en charge Room, SQLiteOpenHelper et toutes les bases de données internes, les détectant automatiquement au démarrage du profilage.

Points clés

  • Database Inspector est un composant d'Android Studio pour visualiser les bases de données SQLite d'une application en temps réel avec la possibilité d'exécuter des requêtes
  • Prise en charge de Room — intégration complète avec Room, y compris l'affichage des requêtes DAO et le suivi des modifications dans la base de données
  • Édition de données — modification des valeurs des cellules du tableau directement depuis l'interface de l'inspecteur avec un reflet immédiat dans l'application
  • Exécution SQL — possibilité d'écrire et d'exécuter des requêtes SQL arbitraires, y compris JOIN, GROUP BY et les sous-requêtes
  • Exportation de base de données — sauvegarde d'un dump de la base de données sur l'ordinateur pour analyse ou partage avec des collègues

Qu'est-ce que Database Inspector ?

Database Inspector est un outil d'Android Studio pour inspecter et déboguer les bases de données locales dans une application mobile. Il permet de visualiser toutes les bases de données SQLite créées par l'application, y compris les bases Room, SQLiteOpenHelper et les bibliothèques tierces. L'outil est disponible à partir d'Android Studio 4.1 et peut être lancé via Android Profiler ou directement depuis le menu View.

Objectif et capacités

L'objectif principal de Database Inspector est la visualisation des données pendant le développement. Au lieu de sortir le contenu de la base de données dans un journal ou d'écrire un écran séparé pour visualiser les données, le développeur peut ouvrir Database Inspector et voir immédiatement toutes les tables, leur schéma et leur contenu. L'outil prend en charge à la fois les bases de données SQLite relationnelles et Room avec Auto-migrations.

Quand utiliser Database Inspector

L'outil est indispensable dans les scénarios où vous devez vérifier l'exactitude du stockage des données après avoir effectué une opération : inscription d'un utilisateur, synchronisation avec le serveur, mise en cache de listes. Au lieu d'écrire une interface de test, le dump de la base de données est visualisé via Database Inspector. L'outil est également activement utilisé pour déboguer les migrations Room — vous pouvez voir le schéma réel des tables après chaque mise à jour de schéma.

Comment fonctionne Database Inspector

Database Inspector se connecte au processus de l'application Android via Android Profiler Service. Il détecte toutes les connexions SQLite ouvertes dans l'application et les affiche dans le panneau latéral. Une compilation Debug de l'application avec API Level 26 (Android 8.0) et supérieur est requise.

Architecture et mécanisme

Au lancement, Database Inspector crée un tunnel ADB entre l'application sur l'appareil et l'IDE sur l'ordinateur. Les fichiers de base de données SQLite WAL (Write-Ahead Logging) sont diffusés via ce tunnel pour afficher le contenu. Les commandes SQL sont envoyées directement au moteur SQLite de l'application via la prise en charge de Database Inspector dans Room et SQLiteDatabase. L'outil détecte automatiquement lorsque l'application ouvre une base de données et l'ajoute à la liste inspectée.

Exigences d'environnement

Pour que Database Inspector fonctionne correctement, vous avez besoin de : Android Studio 4.1+, un appareil ou émulateur avec API Level 26+, et une compilation Debug de l'application. Pour Room, la bibliothèque room-runtime version 2.2+ est également requise. Si la base de données est créée en mode WAL, ce qui est standard pour Room 2.2+, l'outil peut lire les données sans bloquer l'application principale.

kotlin
// Exemple de base de données Room prise en charge par Database Inspector
@Database(
    entities = [User::class, Order::class],
    version = 2,
    autoMigrations = [AutoMigration(from = 1, to = 2)]
)
abstract class AppDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao
    abstract fun orderDao(): OrderDao
}

Principales fonctionnalités de Database Inspector

Database Inspector fournit un ensemble complet de fonctions pour travailler avec des données locales : de l'affichage du schéma des tables à l'exécution de requêtes SQL complexes et à l'édition d'enregistrements.

Affichage des tables et du schéma

Le panneau de gauche affiche toutes les bases de données et tables. Lorsqu'une table est sélectionnée, son contenu s'affiche dans un tableau avec des colonnes : tous les champs d'enregistrement sont présentés comme des colonnes, chaque ligne est un enregistrement distinct. Le schéma de la table (nom, type, contraintes) est affiché en haut. Pour les clés étrangères, les relations entre les tables sont affichées.

Type de donnéeType SQLiteType RoomExemple
Nombre entierINTEGERInt, Long42
ChaîneTEXTString"John"
Nombre décimalREALDouble, Float3.14
Données binairesBLOBByteArray[0x00, 0x01]
Date/HeureINTEGER (Unix epoch)Long, Date1720000000

Exécution de requêtes SQL

L'onglet Query permet d'exécuter des commandes SQL arbitraires directement sur la base de données sélectionnée. SELECT, INSERT, UPDATE, DELETE, CREATE INDEX, JOIN et tous les autres opérateurs SQLite sont pris en charge. Les résultats s'affichent sous forme tabulaire sous l'éditeur de requêtes. L'historique des requêtes est conservé pendant la session.

Édition d'enregistrements

Les cellules du tableau peuvent être éditées directement — cliquez simplement sur une valeur et saisissez-en une nouvelle. Les modifications sont appliquées immédiatement à l'application en cours d'exécution. Cela est particulièrement utile pour tester les cas limites : définir null dans un champ obligatoire, remplacer un ID par un inexistant, vérifier le traitement des chaînes longues. Toutes les modifications sont validées en temps réel.

Débogage Room avec Database Inspector

Database Inspector a une intégration approfondie avec Room, ce qui le rend indispensable lors du développement d'applications avec cette bibliothèque. En plus des fonctionnalités standard, l'inspecteur fournit des capacités spécifiques à Room.

Affichage des requêtes DAO

Pour les bases de données Room, Database Inspector montre les requêtes SQL générées pour chaque méthode DAO. Cela permet de vérifier que Room génère du SQL correct, en particulier pour les requêtes complexes avec JOIN, @Relation et @Transaction. Si Room exécute une requête inefficace (par exemple, N+1 requêtes au lieu d'un seul JOIN), cela est immédiatement visible dans le journal des requêtes de Database Inspector.

Débogage des migrations

Lors de la mise à jour du schéma Room avec AutoMigration ou des migrations manuelles, Database Inspector affiche la structure réelle des tables après la migration. Ouvrez simplement l'inspecteur après le lancement de l'application et vérifiez que toutes les colonnes, index et clés étrangères ont été créés correctement. Si une migration a échoué avec une erreur, la base de données ne s'ouvrira pas — l'outil affichera la dernière version disponible.

Vérification des Relations et Embedded

Room permet de combiner des données de plusieurs tables via @Relation et @Embedded. Database Inspector aide à vérifier visuellement l'exactitude des relations en affichant les données des tables associées côte à côte. Pour chaque clé étrangère, vous pouvez naviguer vers la table associée en un clic.

kotlin
// Entité avec Relation pour vérification via Database Inspector
@Entity(tableName = "users")
data class User(
    @PrimaryKey val id: Int,
    val name: String
)

data class UserWithOrders(
    @Embedded val user: User,
    @Relation(parentColumn = "id", entityColumn = "user_id")
    val orders: List<Order>
)

Scénarios pratiques d'utilisation de Database Inspector

Database Inspector résout des tâches de développement spécifiques qui surviennent lors du travail avec le stockage local de données. Examinons les cas d'utilisation les plus courants de l'outil dans le travail quotidien.

Vérification de la mise en cache des données

Souvent, une application met en cache les réponses API dans une base de données locale. Database Inspector permet de vérifier l'exactitude de la mise en cache : après la synchronisation, vous pouvez voir les enregistrements réels dans la table de cache. Si les données n'apparaissent pas — le problème se trouve dans le code de sauvegarde. Si des doublons apparaissent — le problème se trouve dans la logique upsert.

Débogage des erreurs d'insertion de données

Lorsqu'une méthode DAO ne sauvegarde pas les données mais ne lève pas d'exception, Database Inspector affiche l'état réel de la table. Causes typiques : conflit de clé primaire (paramètre OnConflictStrategy), type de données incorrect dans une colonne, violation de contrainte NOT NULL ou violation de clé étrangère. L'inspecteur permet de voir l'ensemble des modifications de la base de données avant et après l'opération. La comparaison des instantanés de données avant et après un appel DAO est l'un des moyens les plus efficaces de déboguer les erreurs transactionnelles et de vérifier l'exactitude de la logique métier de l'application lors d'opérations d'écriture complexes.

Refactorisation du schéma de base de données

Lors de la modification du schéma des tables — ajout de colonnes, renommage de champs, division de tables — Database Inspector aide à vérifier le résultat de la migration. Lancez simplement l'application avec la nouvelle version de la base de données et vérifiez que toutes les données ont été correctement transférées vers la nouvelle structure. Si des données manquent après la migration, vous pouvez les restaurer à partir d'un dump sauvegardé avant la refactorisation. Ce scénario est particulièrement pertinent lors de la migration de SQLiteOpenHelper vers Room ou lors de la modification de la structure de tables existantes dans une nouvelle version de l'application.

Surveillance des performances des requêtes

Database Inspector peut également être utilisé pour évaluer les performances des requêtes SQL. En exécutant SELECT via l'onglet Query et en mesurant le temps de réponse, vous pouvez identifier les requêtes qui manquent d'index. Room enregistre automatiquement les requêtes lentes dans Logcat avec le tag SLOW SQL, et Database Inspector permet d'exécuter immédiatement EXPLAIN QUERY PLAN pour analyser le plan d'exécution.

Foire aux questions

Pourquoi Database Inspector ne voit-il pas ma base de données ?

Assurez-vous que l'application est exécutée en mode Debug et que le niveau API de l'appareil est 26 ou supérieur. Si la base de données est créée dans un processus séparé ou utilise SQLCipher (chiffrement), Database Inspector peut ne pas la détecter. Pour SQLCipher, utilisez une base de données de débogage auxiliaire sans chiffrement.

Peut-on éditer des données via Database Inspector ?

Oui, l'édition de données est possible directement dans les cellules du tableau. Un double-clic sur une valeur permet de la modifier. Les modifications sont immédiatement appliquées à la base de données de l'application en cours d'exécution. Pour ajouter de nouveaux enregistrements, utilisez la requête SQL INSERT via l'onglet Query.

Database Inspector prend-il en charge les bases de données Realm ?

Non, Database Inspector ne prend pas en charge Realm car Realm n'utilise pas SQLite. Pour déboguer Realm, utilisez Realm Object Server, Realm Studio ou la journalisation dans l'application. Pour MongoDB Realm SDK, l'outil Realm Studio est disponible pour macOS, Windows et Linux.

Comment exporter une base de données depuis Database Inspector ?

Database Inspector permet d'exporter la base de données entière. Faites un clic droit sur le nom de la base dans la liste et sélectionnez Export Database. Le fichier .db sera sauvegardé sur votre ordinateur. Pour le visualiser, utilisez n'importe quel navigateur SQLite, par exemple DB Browser for SQLite.

Database Inspector affecte-t-il les performances de l'application ?

Selon Google, la surcharge est minimale — Database Inspector lit les fichiers WAL de la base de données sans bloquer les écritures. L'exécution de requêtes SQL personnalisées peut charger temporairement la base de données, mais cela est contrôlé par le développeur. L'outil est automatiquement désactivé pour les versions de production.

Résumé

  • Database Inspector est un outil intégré dans Android Studio pour visualiser et éditer les bases de données SQLite d'une application en temps réel
  • Prise en charge de Room inclut l'affichage des requêtes DAO, le débogage des migrations et la vérification de @Relation et @Embedded
  • Exécution de requêtes SQL via l'onglet Query avec prise en charge de tous les opérateurs SQLite et conservation de l'historique
  • Édition en temps réel permet de modifier les valeurs des cellules et de voir immédiatement le résultat dans l'application en cours d'exécution
  • Exportation de base de données vers un fichier .db pour analyse dans des outils tiers ou partage avec des collègues
  • Nécessite Android Studio 4.1+, compilation Debug et API Level 26+ — vérifiez ces exigences si l'outil n'affiche pas la base de données
  • Utilisez Database Inspector régulièrement lors du développement de fonctionnalités liées au stockage local de données — cela accélère considérablement le débogage

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet

Lisez aussi