Database Inspector i Android Studio — är ett inbyggt verktyg för att visa och felsöka SQLite-databaser i mobilapplikationen i realtid. Enligt officiella dokumentationen från Android Developers (2025), gör verktyget det möjligt att utföra SQL-frågor mot den aktiva databasen, visa tabellstruktur och redigera poster utan att stoppa applikationen. Verktyget stöder Room, SQLiteOpenHelper och alla in-app-databaser, och upptäcker dem automatiskt vid start av profilering.
Huvudpunkter
Database Inspector — är ett Android Studio-verktyg för inspektion och felsökning av lokala databaser i mobilapplikationen. Det gör det möjligt att visa alla SQLite-databaser som skapats av applikationen, inklusive Room-, SQLiteOpenHelper- och tredjepartsbiblioteksdatabaser. Verktyget är tillgängligt från Android Studio 4.1 och startas via Android Profiler eller direkt från View-menyn.
Huvuduppgiften för Database Inspector är visualisering av data under utvecklingsprocessen. Istället för att skriva ut databasinnehållet i loggen eller skriva en separat skärm för att visa data, kan utvecklaren öppna Database Inspector och omedelbart se alla tabeller, deras schema och innehåll. Verktyget stöder både relationsdatabaser med SQLite och Room med Auto-migreringar.
Verktyget är oumbärligt i scenarier där du behöver kontrollera korrektheten av datalagring efter en operation: användarregistrering, synkronisering med servern, cachning av listor. Istället för att skriva ett test-UI visas databasdumpen via Database Inspector. Verktyget används också aktivt för felsökning av Room-migreringar — det aktuella tabellschemat kan ses efter varje schemauppdatering.
Database Inspector ansluter till processen för Android-applikationen via Android Profiler Service. Den upptäcker alla öppna SQLite-anslutningar i applikationen och visar dem i sidopanelen. För att fungera krävs en Debug-build av applikationen med API Level 26 (Android 8.0) och högre.
Vid start skapar Database Inspector en ADB-tunnel mellan applikationen på enheten och IDE på datorn. WAL-filerna (Write-Ahead Logging) för SQLite-databasen strömmas via denna tunnel för att visa innehåll. SQL-kommandon skickas direkt till applikationens SQLite-motor via Database Inspector-stöd i Room och SQLiteDatabase. Verktyget upptäcker automatiskt när applikationen öppnar en databas och lägger till den i listan över inspekterade databaser.
För korrekt funktion av Database Inspector krävs: Android Studio 4.1+, enhet eller emulator med API Level 26+, Debug-build av applikationen. För Room krävs dessutom room-runtime-biblioteket version 2.2+. Om databasen skapas i WAL-läge, vilket är standard för Room 2.2+, kan verktyget läsa data utan att blockera huvudapplikationen.
// Exempel på Room-databas som stöds av 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 erbjuder en fullständig uppsättning funktioner för att arbeta med lokal data: från visning av tabellschema till exekvering av komplexa SQL-frågor och redigering av poster.
I den vänstra panelen visas alla databaser och tabeller. När du väljer en tabell öppnas dess innehåll i tabellform med kolumner: alla postfält visas som kolumner, varje rad är en separat post. Tabellschemat (namn, typ, begränsningar) visas högst upp. För främmande nycklar visas relationerna mellan tabellerna.
| Datatyp | SQLite-typ | Room-typ | Exempel |
|---|---|---|---|
| Heltal | INTEGER | Int, Long | 42 |
| Sträng | TEXT | String | “John” |
| Decimaltal | REAL | Double, Float | 3.14 |
| Binär data | BLOB | ByteArray | [0x00, 0x01] |
| Datum/tid | INTEGER (Unix epoch) | Long, Date | 1720000000 |
Fliken Query gör det möjligt att utföra godtyckliga SQL-kommandon direkt på den valda databasen. SELECT, INSERT, UPDATE, DELETE, CREATE INDEX, JOIN och alla andra SQLite-operatorer stöds. Resultaten visas i tabellform under frågeredigeraren. Frågehistoriken sparas under sessionen.
Tabellceller kan redigeras direkt — klicka bara på värdet och ange ett nytt. Ändringarna tillämpas omedelbart på den aktiva applikationen. Detta är särskilt användbart för att testa gränsfall: sätta null i ett obligatoriskt fält, ersätta ID med ett obefintligt, kontrollera hantering av långa strängar. Alla ändringar registreras i realtid.
Database Inspector har en djup integration med Room, vilket gör den oumbärlig vid utveckling av applikationer med detta bibliotek. Förutom standardfunktionaliteten erbjuder inspektören specifika möjligheter för Room.
För Room-databaser visar Database Inspector de genererade SQL-frågorna för varje DAO-metod. Detta gör det möjligt att verifiera att Room genererar korrekt SQL, särskilt för komplexa frågor med JOIN, @Relation och @Transaction. Om Room utför en ineffektiv fråga (till exempel N+1 frågor istället för en JOIN), syns detta omedelbart i Database Inspectors frågelogg.
Vid uppdatering av Room-schemat med AutoMigration eller manuella migreringar, visar Database Inspector den aktuella tabellstrukturen efter migreringen. Öppna bara inspektören efter att applikationen startats och kontrollera att alla kolumner, index och främmande nycklar har skapats korrekt. Om migreringen misslyckades med ett fel öppnas inte databasen — verktyget visar den senast tillgängliga versionen.
Room gör det möjligt att kombinera data från flera tabeller via @Relation och @Embedded. Database Inspector hjälper till att visuellt kontrollera korrektheten av relationer genom att visa data från relaterade tabeller sida vid sida. För varje främmande nyckel kan du navigera till den relaterade tabellen med ett klick.
// Entitet med Relation för kontroll 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 löser specifika programmeringsuppgifter som uppstår vid arbete med lokal datalagring. Låt oss titta på de vanligaste användningsscenarierna för verktyget i det dagliga arbetet.
Ofta cachar applikationen API-svar i en lokal databas. Database Inspector gör det möjligt att verifiera korrektheten av cachning: efter synkronisering kan aktuella poster ses i cachtabellen. Om data inte visas — ligger problemet i lagringskoden. Om dubbletter visas — ligger problemet i upsert-logiken.
När en DAO-metod inte sparar data men inte kastar ett undantag, visar Database Inspector tabellens aktuella tillstånd. Typiska orsaker: Primary Key-konflikt (OnConflictStrategy-inställning), felaktig datatyp i kolumn, brott mot NOT NULL-begränsningar eller Foreign Key violation. Inspektören gör det möjligt att se databasens changeset före och efter operationen. Jämförelse av dataögonblicksbilder före och efter DAO-anrop — ett av de mest effektiva sätten att felsöka transaktionsfel och kontrollera korrektheten av applikationens affärslogik vid komplexa skrivoperationer.
Vid ändring av tabellschema — lägga till kolumner, byta namn på fält, dela tabeller — hjälper Database Inspector att kontrollera migreringsresultatet. Starta bara applikationen med den nya databasversionen och verifiera att all data har överförts korrekt till den nya strukturen. Om data försvann efter migreringen kan de återställas från dumpen som sparades före refaktoreringen. Detta scenario är särskilt relevant vid övergång från SQLiteOpenHelper till Room eller vid ändring av strukturen på befintliga tabeller i en ny version av applikationen.
Database Inspector kan också användas för att utvärdera prestanda hos SQL-frågor. Genom att utföra SELECT via fliken Query och mäta svarstiden kan frågor som saknar index identifieras. Room loggar automatiskt långsamma frågor i Logcat med märkningen SLOW SQL, och Database Inspector gör det möjligt att omedelbart utföra EXPLAIN QUERY PLAN för analys av exekveringsplanen.
Vanliga frågor
Se till att applikationen körs i Debug-läge och att enhetens API Level är 26 eller högre. Om databasen skapas i en separat process eller med SQLCipher (kryptering) kan Database Inspector inte upptäcka den. För SQLCipher, använd en hjälpdebug-databas utan kryptering.
Ja, dataredigering är möjlig direkt i tabellcellerna. Dubbelklicka på värdet för att ändra det. Ändringarna tillämpas omedelbart på databasen i den aktiva applikationen. För att lägga till nya poster, använd en INSERT SQL-fråga via fliken Query.
Nej, Database Inspector stöder inte Realm, eftersom Realm inte använder SQLite. För felsökning av Realm, använd Realm Object Server, Realm Studio eller loggning i applikationen. För MongoDB Realm SDK finns ett eget Realm Studio-verktyg för macOS, Windows och Linux.
Database Inspector gör det möjligt att exportera databasen fullständigt. Högerklicka på databasnamnet i listan och välj Export Database. .db-filen sparas på datorn. För visning, använd valfri SQLite-webbläsare, till exempel DB Browser for SQLite.
Enligt Google är overheaden minimal — Database Inspector läser databasens WAL-filer utan att blockera skrivning. Exekvering av anpassade SQL-frågor kan tillfälligt belasta databasen, men detta kontrolleras av utvecklaren. För produktionsbyggen stängs verktyget automatiskt av.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också