Database Inspector in Android Studio ist ein integriertes Tool zum Anzeigen und Debuggen von SQLite-Datenbanken einer mobilen Anwendung in Echtzeit. Laut der offiziellen Android Developers-Dokumentation (2025) ermöglicht das Tool die Ausführung von SQL-Abfragen in der aktiven Datenbank, das Anzeigen von Tabellenstrukturen und das Bearbeiten von Datensätzen ohne Stoppen der Anwendung. Das Tool unterstützt Room, SQLiteOpenHelper und alle In-App-Datenbanken und erkennt sie automatisch beim Start der Profilerstellung.
Wichtige Punkte
Database Inspector ist ein Android Studio-Tool zum Inspizieren und Debuggen lokaler Datenbanken in einer mobilen Anwendung. Es ermöglicht die Anzeige aller von der Anwendung erstellten SQLite-Datenbanken, einschließlich Room-Datenbanken, SQLiteOpenHelper und Drittanbieter-Bibliotheken. Das Tool ist ab Android Studio 4.1 verfügbar und kann über Android Profiler oder direkt über das View-Menü gestartet werden.
Der Hauptzweck von Database Inspector ist die Datenvisualisierung während der Entwicklung. Anstatt den Datenbankinhalt in ein Log auszugeben oder einen separaten Bildschirm zum Anzeigen von Daten zu schreiben, kann der Entwickler Database Inspector öffnen und sofort alle Tabellen, deren Schema und Inhalte sehen. Das Tool unterstützt sowohl relationale SQLite-Datenbanken als auch Room mit Auto-Migrationen.
Das Tool ist in Szenarien unverzichtbar, in denen Sie die Korrektheit der Datenspeicherung überprüfen müssen, nachdem Sie einen Vorgang ausgeführt haben: Benutzerregistrierung, Serversynchronisation, Listen-Caching. Anstatt eine Testoberfläche zu schreiben, wird der Datenbank-Dump über Database Inspector angezeigt. Das Tool wird auch aktiv zum Debuggen von Room-Migrationen verwendet — Sie können das tatsächliche Tabellenschema nach jedem Schema-Update sehen.
Database Inspector verbindet sich mit dem Prozess der Android-Anwendung über den Android Profiler Service. Es erkennt alle offenen SQLite-Verbindungen in der Anwendung und zeigt sie im Seitenbereich an. Ein Debug-Build der Anwendung mit API Level 26 (Android 8.0) und höher ist erforderlich.
Beim Start erstellt Database Inspector einen ADB-Tunnel zwischen der Anwendung auf dem Gerät und der IDE auf dem Computer. SQLite WAL (Write-Ahead Logging)-Datenbankdateien werden über diesen Tunnel gestreamt, um den Inhalt anzuzeigen. SQL-Befehle werden direkt an die SQLite-Engine der Anwendung über die Database Inspector-Unterstützung in Room und SQLiteDatabase gesendet. Das Tool erkennt automatisch, wann die Anwendung eine Datenbank öffnet, und fügt sie zur inspizierten Liste hinzu.
Für den korrekten Betrieb von Database Inspector benötigen Sie: Android Studio 4.1+, ein Gerät oder einen Emulator mit API Level 26+ und einen Debug-Build der Anwendung. Für Room ist zusätzlich die room-runtime-Bibliothek Version 2.2+ erforderlich. Wenn die Datenbank im WAL-Modus erstellt wird, der für Room 2.2+ Standard ist, kann das Tool Daten lesen, ohne die Hauptanwendung zu blockieren.
// Beispiel einer Room-Datenbank, die von Database Inspector unterstützt wird
@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 bietet einen vollständigen Funktionsumfang für die Arbeit mit lokalen Daten: von der Anzeige des Tabellenschemas bis zur Ausführung komplexer SQL-Abfragen und der Bearbeitung von Datensätzen.
Im linken Bereich werden alle Datenbanken und Tabellen angezeigt. Wenn eine Tabelle ausgewählt wird, wird ihr Inhalt in einer Tabelle mit Spalten dargestellt: Alle Datensatzfelder werden als Spalten angezeigt, jede Zeile ist ein einzelner Datensatz. Das Tabellenschema (Name, Typ, Einschränkungen) wird oben angezeigt. Für Fremdschlüssel werden Beziehungen zwischen Tabellen dargestellt.
| Datentyp | SQLite-Typ | Room-Typ | Beispiel |
|---|---|---|---|
| Ganze Zahl | INTEGER | Int, Long | 42 |
| Zeichenkette | TEXT | String | "John" |
| Dezimalzahl | REAL | Double, Float | 3.14 |
| Binärdaten | BLOB | ByteArray | [0x00, 0x01] |
| Datum/Uhrzeit | INTEGER (Unix-Epoche) | Long, Date | 1720000000 |
Der Query-Tab ermöglicht die direkte Ausführung beliebiger SQL-Befehle in der ausgewählten Datenbank. SELECT, INSERT, UPDATE, DELETE, CREATE INDEX, JOIN und alle anderen SQLite-Operatoren werden unterstützt. Ergebnisse werden in tabellarischer Form unter dem Abfrage-Editor angezeigt. Der Abfrageverlauf bleibt während der Sitzung erhalten.
Tabellenzellen können direkt bearbeitet werden — klicken Sie einfach auf einen Wert und geben Sie einen neuen ein. Änderungen werden sofort auf die laufende Anwendung angewendet. Dies ist besonders nützlich zum Testen von Grenzfällen: Setzen von null in einem Pflichtfeld, Ersetzen einer ID durch eine nicht vorhandene, Überprüfen der Verarbeitung langer Zeichenketten. Alle Änderungen werden in Echtzeit übernommen.
Database Inspector ist tief in Room integriert, was es bei der Entwicklung von Anwendungen mit dieser Bibliothek unverzichtbar macht. Zusätzlich zur Standardfunktionalität bietet der Inspektor Room-spezifische Fähigkeiten.
Für Room-Datenbanken zeigt Database Inspector die generierten SQL-Abfragen für jede DAO-Methode an. Dadurch können Sie überprüfen, ob Room korrektes SQL generiert, insbesondere bei komplexen Abfragen mit JOIN, @Relation und @Transaction. Wenn Room eine ineffiziente Abfrage ausführt (z. B. N+1 Abfragen statt eines einzelnen JOIN), ist dies sofort im Database Inspector-Abfrageprotokoll sichtbar.
Beim Aktualisieren des Room-Schemas mit AutoMigration oder manuellen Migrationen zeigt Database Inspector die tatsächliche Tabellenstruktur nach der Migration an. Öffnen Sie einfach den Inspektor nach dem Starten der Anwendung und prüfen Sie, ob alle Spalten, Indizes und Fremdschlüssel korrekt erstellt wurden. Wenn eine Migration mit einem Fehler fehlgeschlagen ist, wird die Datenbank nicht geöffnet — das Tool zeigt die letzte verfügbare Version an.
Room ermöglicht das Kombinieren von Daten aus mehreren Tabellen über @Relation und @Embedded. Database Inspector hilft, die Korrektheit von Beziehungen visuell zu überprüfen, indem es Daten verwandter Tabellen nebeneinander anzeigt. Für jeden Fremdschlüssel können Sie mit einem Klick zur verknüpften Tabelle navigieren.
// Entität mit Relation zur Überprüfung über 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 löst spezifische Entwicklungsaufgaben, die bei der Arbeit mit lokaler Datenspeicherung auftreten. Sehen wir uns die häufigsten Anwendungsfälle des Tools im täglichen Gebrauch an.
Häufig speichert eine Anwendung API-Antworten in einer lokalen Datenbank zwischen. Database Inspector ermöglicht es Ihnen, die Korrektheit des Cachings zu überprüfen: Nach der Synchronisierung können Sie die tatsächlichen Datensätze in der Cache-Tabelle sehen. Wenn keine Daten angezeigt werden — liegt das Problem im Speichercode. Wenn Duplikate auftreten — liegt das Problem in der Upsert-Logik.
Wenn eine DAO-Methode keine Daten speichert, aber keine Ausnahme auslöst, zeigt Database Inspector den tatsächlichen Zustand der Tabelle. Typische Ursachen: Primary-Key-Konflikt (OnConflictStrategy-Einstellung), falscher Datentyp in einer Spalte, NOT-NULL-Constraint-Verletzung oder Foreign-Key-Verletzung. Der Inspektor ermöglicht es Ihnen, den Datenbank-Änderungssatz vor und nach dem Vorgang zu sehen. Der Vergleich von Daten-Snapshots vor und nach einem DAO-Aufruf ist eine der effektivsten Methoden, um Transaktionsfehler zu debuggen und die Korrektheit der Geschäftslogik der Anwendung bei komplexen Schreibvorgängen zu überprüfen.
Beim Ändern des Tabellenschemas — Hinzufügen von Spalten, Umbenennen von Feldern, Teilen von Tabellen — hilft Database Inspector bei der Überprüfung des Migrationsergebnisses. Starten Sie einfach die Anwendung mit der neuen Datenbankversion und prüfen Sie, ob alle Daten korrekt in die neue Struktur übertragen wurden. Wenn nach der Migration Daten fehlen, können Sie sie aus einem vor dem Refactoring gespeicherten Dump wiederherstellen. Dieses Szenario ist besonders relevant bei der Migration von SQLiteOpenHelper zu Room oder bei der Änderung der Struktur vorhandener Tabellen in einer neuen Version der Anwendung.
Database Inspector kann auch zur Bewertung der SQL-Abfrageleistung verwendet werden. Durch Ausführen von SELECT über den Query-Tab und Messen der Antwortzeit können Sie Abfragen identifizieren, denen Indizes fehlen. Room protokolliert automatisch langsame Abfragen in Logcat mit dem Tag SLOW SQL, und Database Inspector ermöglicht die sofortige Ausführung von EXPLAIN QUERY PLAN zur Analyse des Ausführungsplans.
Häufig gestellte Fragen
Stellen Sie sicher, dass die Anwendung im Debug-Modus läuft und der API-Level des Geräts 26 oder höher ist. Wenn die Datenbank in einem separaten Prozess oder mit SQLCipher (Verschlüsselung) erstellt wird, kann Database Inspector sie möglicherweise nicht erkennen. Verwenden Sie für SQLCipher eine Hilfs-Debug-Datenbank ohne Verschlüsselung.
Ja, die Datenbearbeitung ist direkt in Tabellenzellen möglich. Ein Doppelklick auf einen Wert ermöglicht dessen Änderung. Änderungen werden sofort auf die Datenbank der laufenden Anwendung angewendet. Verwenden Sie zum Hinzufügen neuer Datensätze die INSERT-SQL-Abfrage über den Query-Tab.
Nein, Database Inspector unterstützt Realm nicht, da Realm kein SQLite verwendet. Verwenden Sie zum Debuggen von Realm Realm Object Server, Realm Studio oder In-App-Logging. Für das MongoDB Realm SDK ist das Realm Studio-Tool für macOS, Windows und Linux verfügbar.
Database Inspector ermöglicht den Export der gesamten Datenbank. Klicken Sie mit der rechten Maustaste auf den Datenbanknamen in der Liste und wählen Sie Export Database. Die .db-Datei wird auf Ihrem Computer gespeichert. Verwenden Sie zum Anzeigen einen beliebigen SQLite-Browser, z. B. DB Browser for SQLite.
Laut Google ist der Overhead minimal — Database Inspector liest WAL-Datenbankdateien, ohne Schreibvorgänge zu blockieren. Die Ausführung benutzerdefinierter SQL-Abfragen kann die Datenbank vorübergehend belasten, aber dies wird vom Entwickler kontrolliert. Für Produktions-Builds wird das Tool automatisch deaktiviert.
Zusammenfassung
Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch