Database Inspector в Android Studio — е вграден инструмент за преглед и дебъгване на SQLite бази данни на мобилното приложение в реално време. Според официалната документация на Android Developers (2025), инструментът позволява изпълнение на SQL заявки към активната база, преглед на структурата на таблиците и редактиране на записи без спиране на приложението. Инструментът поддържа Room, SQLiteOpenHelper и всякакви in-app бази данни, като ги открива автоматично при стартиране на профилирането.
Основни моменти
Database Inspector — е инструмент на Android Studio за инспекция и дебъгване на локални бази данни в мобилното приложение. Той позволява преглед на всички SQLite бази данни, създадени от приложението, включително бази на Room, SQLiteOpenHelper и библиотеки на трети страни. Инструментът е достъпен от Android Studio 4.1 и се стартира чрез Android Profiler или директно от менюто View.
Основната задача на Database Inspector е визуализация на данни в процеса на разработка. Вместо да извежда съдържанието на базата в лог или да пише отделен екран за преглед на данни, разработчикът може да отвори Database Inspector и веднага да види всички таблици, тяхната схема и съдържание. Инструментът поддържа както релационни SQLite бази, така и Room с Auto-миграции.
Инструментът е незаменим в сценарии, когато трябва да проверите коректността на запазване на данни след изпълнение на операция: регистрация на потребител, синхронизация със сървър, кеширане на списъци. Вместо да пишете тестов UI, dump на базата се преглежда чрез Database Inspector. Инструментът се използва активно и за дебъгване на миграции на Room — актуалната схема на таблиците може да се види след всяко обновяване на схемата.
Database Inspector се свързва с процеса на Android приложението чрез Android Profiler Service. Той открива всички отворени SQLite връзки в приложението и ги показва в страничния панел. За работа е необходима Debug версия на приложението с API Level 26 (Android 8.0) и по-висок.
При стартиране Database Inspector създава ADB тунел между приложението на устройството и IDE на компютъра. WAL (Write-Ahead Logging) файловете на SQLite базата данни се предават през този тунел за показване на съдържанието. SQL командите се изпращат директно до SQLite двигателя на приложението чрез поддръжката на Database Inspector в Room и SQLiteDatabase. Инструментът автоматично открива момента, когато приложението отваря база данни, и я добавя в списъка за инспекция.
За коректна работа на Database Inspector е необходимо: Android Studio 4.1+, устройство или емулатор с API Level 26+, Debug версия на приложението. За Room допълнително е необходима библиотека room-runtime версия 2.2+. Ако базата данни е създадена в WAL режим, което е стандартно за Room 2.2+, инструментът може да чете данни без да блокира основното приложение.
// Пример за Room база данни, поддържана от 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 предоставя пълен набор от функции за работа с локални данни: от преглед на схемата на таблиците до изпълнение на сложни SQL заявки и редактиране на записи.
В левия панел се показват всички бази данни и таблици. При избор на таблица, нейното съдържание се отваря под формата на таблица с колони: всички полета на записа се показват като колони, всеки ред е отделен запис. Схемата на таблицата (име, тип, ограничения) се показва отгоре. За външни ключове се показват връзките между таблиците.
| Тип данни | SQLite тип | Room тип | Пример |
|---|---|---|---|
| Цяло число | INTEGER | Int, Long | 42 |
| Низ | TEXT | String | „John” |
| Дробно число | REAL | Double, Float | 3.14 |
| Двоични данни | BLOB | ByteArray | [0x00, 0x01] |
| Дата/час | INTEGER (Unix epoch) | Long, Date | 1720000000 |
Разделът Query позволява изпълнение на произволни SQL команди директно към избраната база данни. Поддържат се SELECT, INSERT, UPDATE, DELETE, CREATE INDEX, JOIN и всякакви други SQLite оператори. Резултатите се показват в табличен вид под редактора на заявки. Историята на заявките се запазва по време на сесията.
Клетките на таблицата могат да се редактират директно — достатъчно е да кликнете върху стойността и да въведете нова. Промените се прилагат незабавно към работещото приложение. Това е особено полезно за тестване на гранични случаи: задаване на null в задължително поле, замяна на ID с несъществуващо, проверка на обработка на дълги низове. Всички промени се записват в реално време.
Database Inspector има дълбока интеграция с Room, което го прави незаменим при разработката на приложения с тази библиотека. Освен стандартната функционалност, инспекторът предоставя специфични за Room възможности.
За Room бази, Database Inspector показва генерираните SQL заявки за всеки DAO метод. Това позволява да се уверите, че Room генерира правилен SQL, особено за сложни заявки с JOIN, @Relation и @Transaction. Ако Room изпълнява неефективна заявка (например N+1 заявки вместо един JOIN), това веднага се вижда в лога на заявките на Database Inspector.
При обновяване на схемата на Room с AutoMigration или ръчни миграции, Database Inspector показва актуалната структура на таблиците след миграцията. Достатъчно е да отворите инспектора след стартиране на приложението и да проверите дали всички колони, индекси и външни ключове са създадени правилно. Ако миграцията е неуспешна с грешка, базата данни няма да се отвори — инструментът ще покаже последната налична версия.
Room позволява комбиниране на данни от множество таблици чрез @Relation и @Embedded. Database Inspector помага за визуална проверка на коректността на връзките, като показва данни на свързаните таблици една до друга. За всеки външен ключ можете да навигирате до свързаната таблица с едно кликване.
// Entity с Relation за проверка чрез 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 решава конкретни програмни задачи, които възникват при работа с локално съхранение на данни. Нека разгледаме най-честите сценарии за използване на инструмента в ежедневната работа.
Често приложението кешира API отговори в локална база данни. Database Inspector позволява да се уверите в коректността на кеширането: след изпълнение на синхронизация, актуалните записи могат да се видят в кеш таблицата. Ако данните не се появиха — проблемът е в кода за запазване. Ако се появиха дубликати — проблемът е в upsert логиката.
Когато DAO метод не запазва данни, но не хвърля изключение, Database Inspector показва актуалното състояние на таблицата. Типични причини: конфликт на Primary Key (настройка на OnConflictStrategy), неправилен тип данни в колона, нарушение на NOT NULL ограничения или Foreign Key violation. Инспекторът позволява да видите changeset на базата преди и след операцията. Сравняването на моментни снимки на данни преди и след извикване на DAO — един от най-ефективните начини за дебъгване на транзакционни грешки и проверка на коректността на бизнес логиката на приложението при сложни операции за запис.
При промяна на схемата на таблиците — добавяне на колони, преименуване на полета, разделяне на таблици — Database Inspector помага да проверите резултата от миграцията. Достатъчно е да стартирате приложението с новата версия на базата и да се уверите, че всички данни са правилно прехвърлени в новата структура. Ако след миграцията данните изчезнаха, те могат да бъдат възстановени от dump, запазен преди рефакторирането. Този сценарий е особено актуален при преминаване от SQLiteOpenHelper към Room или при промяна на структурата на съществуващи таблици в нова версия на приложението.
Database Inspector може също да се използва за оценка на производителността на SQL заявки. Чрез изпълнение на SELECT през раздела Query и измерване на времето за отговор, могат да бъдат идентифицирани заявки, на които липсват индекси. Room автоматично логва бавни заявки в Logcat с маркировка SLOW SQL, а Database Inspector позволява незабавно изпълнение на EXPLAIN QUERY PLAN за анализ на плана за изпълнение.
Често задавани въпроси
Уверете се, че приложението работи в Debug режим, а API Level на устройството е 26 или по-висок. Ако базата е създадена в отделен процес или с използване на SQLCipher (криптиране), Database Inspector може да не я открие. За SQLCipher използвайте помощна debug база без криптиране.
Да, редактирането на данни е възможно директно в клетките на таблицата. Двойното кликване върху стойността позволява нейната промяна. Промените се прилагат незабавно към базата данни на работещото приложение. За добавяне на нови записи използвайте SQL заявка INSERT чрез раздела Query.
Не, Database Inspector не поддържа Realm, тъй като Realm не използва SQLite. За дебъгване на Realm използвайте Realm Object Server, Realm Studio или логване в приложението. За MongoDB Realm SDK е наличен собствен инструмент Realm Studio за macOS, Windows и Linux.
Database Inspector позволява експортиране на базата данни изцяло. Кликнете с десния бутон върху името на базата в списъка и изберете Export Database. Файлът .db ще бъде запазен на компютъра. За преглед използвайте всеки SQLite браузър, например DB Browser for SQLite.
Според Google, натоварването е минимално — Database Inspector чете WAL файловете на базата данни, без да блокира записа. Изпълнението на потребителски SQL заявки може временно да натовари базата, но това се контролира от разработчика. За production версии инструментът автоматично се изключва.
Обобщение
Ще разработим мобилно приложение под ключ
IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.
Прочетете също