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 дамп базы просматривается через Database Inspector. Также инструмент активно используется для отладки миграций Room — можно увидеть актуальную схему таблиц после каждого обновления схемы.
Database Inspector подключается к процессу Android-приложения через Android Profiler Service. Он обнаруживает все открытые SQLite-соединения в приложении и отображает их в боковой панели. Для работы требуется Debug-сборка приложения с API Level 26 (Android 8.0) и выше.
При запуске Database Inspector создаёт ADB-туннель между приложением на устройстве и IDE на компьютере. SQLite WAL (Write-Ahead Logging) файлы базы данных транслируются через этот туннель для отображения содержимого. Команды SQL отправляются непосредственно в SQLite Engine приложения через поддержку 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-запросов и редактирования записей.
В левой панели отображаются все базы данных и таблицы. При выборе таблицы открывается её содержимое в виде таблицы с колонками: все поля записи отображаются как колонки, каждая строка — отдельная запись. Схема таблицы (имя, тип, constraints) отображается сверху. Для внешних ключей показываются связи между таблицами.
| Тип данных | 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 и любые другие SQL-операторы 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 constraints или Foreign Key violation. Инспектор позволяет увидеть changeset базы до и после операции. Сравнение снимков данных до и после вызова DAO — один из самых эффективных способов отладки транзакционных ошибок и проверки корректности бизнес-логики приложения при сложных операциях записи.
При изменении схемы таблиц — добавлении колонок, переименовании полей, разбиении таблиц — Database Inspector помогает проверить результат миграции. Достаточно запустить приложение с новой версией базы и убедиться, что все данные корректно перенесены в новую структуру. Если после миграции данные пропали, можно восстановить их из дампа, сохранённого до рефакторинга. Этот сценарий особенно актуален при переходе с 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 года. Мы проконсультируем вас и предложим наилучшее решение.
Читайте также