Database Inspector în Android Studio — este un instrument încorporat pentru vizualizarea și depanarea bazelor de date SQLite ale aplicației mobile în timp real. Conform documentației oficiale Android Developers (2025), instrumentul permite executarea interogărilor SQL către baza activă, vizualizarea structurii tabelelor și editarea înregistrărilor fără oprirea aplicației. Instrumentul suportă Room, SQLiteOpenHelper și orice baze de date in-app, detectându-le automat la pornirea profilării.
Puncte principale
Database Inspector — este un instrument Android Studio pentru inspecția și depanarea bazelor de date locale în aplicația mobilă. Permite vizualizarea tuturor bazelor de date SQLite create de aplicație, inclusiv bazele Room, SQLiteOpenHelper și ale bibliotecilor terțe. Instrumentul este disponibil începând cu Android Studio 4.1 și se lansează prin Android Profiler sau direct din meniul View.
Sarcina principală a Database Inspector este vizualizarea datelor în procesul de dezvoltare. În loc să afișeze conținutul bazei în log sau să scrie un ecran separat pentru vizualizarea datelor, dezvoltatorul poate deschide Database Inspector și vedea imediat toate tabelele, schema și conținutul lor. Instrumentul suportă atât baze relaționale SQLite, cât și Room cu Auto-migrări.
Instrumentul este indispensabil în scenariile când trebuie verificată corectitudinea salvării datelor după executarea unei operații: înregistrarea utilizatorului, sincronizarea cu serverul, stocarea în cache a listelor. În loc să scrieți un UI de testare, dump-ul bazei este vizualizat prin Database Inspector. De asemenea, instrumentul este utilizat activ pentru depanarea migrărilor Room — se poate vedea schema actuală a tabelelor după fiecare actualizare a schemei.
Database Inspector se conectează la procesul aplicației Android prin Android Profiler Service. Detectează toate conexiunile SQLite deschise în aplicație și le afișează în panoul lateral. Pentru funcționare necesită o compilare Debug a aplicației cu API Level 26 (Android 8.0) și superior.
La pornire, Database Inspector creează un tunel ADB între aplicația de pe dispozitiv și IDE-ul de pe calculator. Fișierele WAL (Write-Ahead Logging) ale bazei de date SQLite sunt transmise prin acest tunel pentru afișarea conținutului. Comenzile SQL sunt trimise direct motorului SQLite al aplicației prin suportul Database Inspector în Room și SQLiteDatabase. Instrumentul detectează automat momentul când aplicația deschide baza de date și o adaugă în lista celor inspectate.
Pentru funcționarea corectă a Database Inspector este necesar: Android Studio 4.1+, dispozitiv sau emulator cu API Level 26+, compilare Debug a aplicației. Pentru Room este necesară suplimentar biblioteca room-runtime versiunea 2.2+. Dacă baza de date este creată în modul WAL, ceea ce este standard pentru Room 2.2+, instrumentul poate citi datele fără a bloca aplicația principală.
// Exemplu de bază de date Room suportată de 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 oferă un set complet de funcții pentru lucrul cu datele locale: de la vizualizarea schemei tabelelor până la executarea interogărilor SQL complexe și editarea înregistrărilor.
În panoul stâng sunt afișate toate bazele de date și tabelele. La selectarea unei tabele, conținutul său se deschide sub formă de tabel cu coloane: toate câmpurile înregistrării sunt afișate ca coloane, fiecare rând fiind o înregistrare separată. Schema tabelului (nume, tip, constrângeri) este afișată deasupra. Pentru cheile externe se arată legăturile între tabele.
| Tip de date | Tip SQLite | Tip Room | Exemplu |
|---|---|---|---|
| Număr întreg | INTEGER | Int, Long | 42 |
| Șir de caractere | TEXT | String | „John” |
| Număr zecimal | REAL | Double, Float | 3.14 |
| Date binare | BLOB | ByteArray | [0x00, 0x01] |
| Dată/oră | INTEGER (Unix epoch) | Long, Date | 1720000000 |
Fila Query permite executarea de comenzi SQL arbitrare direct pe baza de date selectată. Sunt suportate SELECT, INSERT, UPDATE, DELETE, CREATE INDEX, JOIN și orice alți operatori SQLite. Rezultatele sunt afișate sub formă de tabel sub editorul de interogări. Istoricul interogărilor este păstrat pe durata sesiunii.
Celulele tabelului pot fi editate direct — suficient să faceți clic pe valoare și să introduceți una nouă. Modificările se aplică imediat aplicației în funcțiune. Acest lucru este util în special pentru testarea cazurilor limită: setarea null într-un câmp obligatoriu, înlocuirea ID-ului cu unul inexistent, verificarea procesării șirurilor lungi. Toate modificările sunt înregistrate în timp real.
Database Inspector are o integrare profundă cu Room, ceea ce îl face indispensabil la dezvoltarea aplicațiilor cu această bibliotecă. Pe lângă funcționalitatea standard, inspectorul oferă posibilități specifice Room.
Pentru bazele Room, Database Inspector afișează interogările SQL generate pentru fiecare metodă DAO. Acest lucru permite verificarea faptului că Room generează SQL corect, în special pentru interogări complexe cu JOIN, @Relation și @Transaction. Dacă Room execută o interogare ineficientă (de exemplu, N+1 interogări în loc de un JOIN), acest lucru este vizibil imediat în jurnalul de interogări al Database Inspector.
La actualizarea schemei Room cu AutoMigration sau migrări manuale, Database Inspector arată structura actuală a tabelelor după migrare. Este suficient să deschideți inspectorul după lansarea aplicației și să verificați dacă toate coloanele, indicii și cheile externe au fost create corect. Dacă migrarea a eșuat cu eroare, baza de date nu se va deschide — instrumentul va afișa ultima versiune disponibilă.
Room permite combinarea datelor din mai multe tabele prin @Relation și @Embedded. Database Inspector ajută la verificarea vizuală a corectitudinii legăturilor, afișând datele tabelelor conexe una lângă alta. Pentru fiecare cheie externă se poate naviga la tabela conexă cu un singur clic.
// Entity cu Relation pentru verificare prin 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 rezolvă sarcini specifice de programare care apar la lucrul cu stocarea locală a datelor. Să analizăm cele mai frecvente scenarii de utilizare a instrumentului în munca de zi cu zi.
Adesea aplicația stochează în cache răspunsurile API în baza de date locală. Database Inspector permite verificarea corectitudinii stocării în cache: după executarea sincronizării, se pot vedea înregistrările actuale în tabela de cache. Dacă datele nu au apărut — problema este în codul de salvare. Dacă au apărut duplicate — problema este în logica upsert.
Când metoda DAO nu salvează datele, dar nu aruncă excepție, Database Inspector arată starea actuală a tabelului. Cauze tipice: conflict de Primary Key (setarea OnConflictStrategy), tip de date incorect în coloană, încălcarea constrângerilor NOT NULL sau Foreign Key violation. Inspectorul permite vizualizarea changeset-ului bazei înainte și după operație. Compararea instantaneelor datelor înainte și după apelarea DAO — una dintre cele mai eficiente metode de depanare a erorilor tranzacționale și de verificare a corectitudinii logicii de business a aplicației la operații complexe de scriere.
La modificarea schemei tabelelor — adăugarea coloanelor, redenumirea câmpurilor, divizarea tabelelor — Database Inspector ajută la verificarea rezultatului migrării. Este suficient să lansați aplicația cu noua versiune a bazei și să vă asigurați că toate datele au fost transferate corect în noua structură. Dacă după migrare datele au dispărut, ele pot fi restaurate din dump-ul salvat înainte de refactorizare. Acest scenariu este deosebit de relevant la trecerea de la SQLiteOpenHelper la Room sau la modificarea structurii tabelelor existente în noua versiune a aplicației.
Database Inspector poate fi utilizat și pentru evaluarea performanței interogărilor SQL. Executând SELECT prin fila Query și măsurând timpul de răspuns, se pot identifica interogările cărora le lipsesc indicii. Room înregistrează automat interogările lente în Logcat cu marcajul SLOW SQL, iar Database Inspector permite executarea imediată a EXPLAIN QUERY PLAN pentru analiza planului de execuție.
Întrebări frecvente
Asigurați-vă că aplicația rulează în modul Debug, iar API Level al dispozitivului este 26 sau mai mare. Dacă baza este creată într-un proces separat sau cu utilizarea SQLCipher (criptare), Database Inspector poate să nu o detecteze. Pentru SQLCipher utilizați o bază de debug auxiliară fără criptare.
Da, editarea datelor este posibilă direct în celulele tabelului. Un dublu clic pe valoare permite modificarea acesteia. Modificările se aplică imediat bazei de date a aplicației în funcțiune. Pentru adăugarea de înregistrări noi utilizați interogarea SQL INSERT prin fila Query.
Nu, Database Inspector nu suportă Realm, deoarece Realm nu utilizează SQLite. Pentru depanarea Realm utilizați Realm Object Server, Realm Studio sau înregistrarea în aplicație. Pentru MongoDB Realm SDK este disponibil instrumentul propriu Realm Studio pentru macOS, Windows și Linux.
Database Inspector permite exportarea completă a bazei de date. Faceți clic dreapta pe numele bazei din listă și selectați Export Database. Fișierul .db va fi salvat pe calculator. Pentru vizualizare utilizați orice browser SQLite, de exemplu DB Browser for SQLite.
Conform Google, suprasarcina este minimală — Database Inspector citește fișierele WAL ale bazei de date, fără a bloca scrierea. Executarea interogărilor SQL personalizate poate încărca temporar baza, dar acest lucru este controlat de dezvoltator. Pentru compilările de producție, instrumentul se dezactivează automat.
Concluzii
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.
Citiți și