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 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.
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.
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.
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.
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.
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.
// 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
}
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.
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ée | Type SQLite | Type Room | Exemple |
|---|---|---|---|
| Nombre entier | INTEGER | Int, Long | 42 |
| Chaîne | TEXT | String | "John" |
| Nombre décimal | REAL | Double, Float | 3.14 |
| Données binaires | BLOB | ByteArray | [0x00, 0x01] |
| Date/Heure | INTEGER (Unix epoch) | Long, Date | 1720000000 |
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.
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.
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.
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.
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.
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.
// 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>
)
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.
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.
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.
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.
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
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.
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.
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.
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.
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é
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.
Lisez aussi