Database Inspector: что это, как работать с SQLite и отладка Room

Автор: IT Sectr Опубликовано: 2026-05-07 Время чтения: 8 мин

Database Inspector в Android Studio — это встроенный инструмент для просмотра и отладки SQLite-баз данных мобильного приложения в реальном времени. По данным официальной документации Android Developers (2025), инструмент позволяет выполнять SQL-запросы к активной базе, просматривать структуру таблиц и редактировать записи без остановки приложения. Инструмент поддерживает Room, SQLiteOpenHelper и любые in-app базы данных, автоматически обнаруживая их при запуске профилирования.

Главное

  • Database Inspector — это компонент Android Studio для просмотра SQLite-баз данных приложения в реальном времени с возможностью выполнения запросов
  • Поддержка Room — полная интеграция с Room, включая просмотр DAO-запросов и отслеживание изменений в базе данных
  • Редактирование данных — изменение значений ячеек таблицы напрямую из интерфейса инспектора с немедленным отражением в приложении
  • Выполнение SQL — возможность писать и выполнять произвольные SQL-запросы, включая JOIN, GROUP BY и подзапросы
  • Экспорт базы — сохранение дампа базы данных на компьютер для анализа или передачи коллегам

Что такое Database Inspector?

Database Inspector — это инструмент Android Studio для инспекции и отладки локальных баз данных в мобильном приложении. Он позволяет просматривать все SQLite-базы, созданные приложением, включая базы Room, SQLiteOpenHelper и сторонних библиотек. Инструмент доступен начиная с Android Studio 4.1 и запускается через Android Profiler или напрямую из меню View.

Назначение и возможности

Основная задача Database Inspector — визуализация данных в процессе разработки. Вместо того чтобы выводить содержимое базы в лог или писать отдельный экран для просмотра данных, разработчик может открыть Database Inspector и сразу увидеть все таблицы, их схему и содержимое. Инструмент поддерживает как реляционные SQLite-базы, так и Room с Auto-миграциями.

Когда использовать Database Inspector

Инструмент незаменим в сценариях, когда нужно проверить корректность сохранения данных после выполнения операции: регистрация пользователя, синхронизация с сервером, кэширование списков. Вместо написания тестового UI дамп базы просматривается через Database Inspector. Также инструмент активно используется для отладки миграций Room — можно увидеть актуальную схему таблиц после каждого обновления схемы.

Как работает Database Inspector

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+, инструмент может читать данные без блокировки основного приложения.

kotlin
// Пример 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

Database Inspector предоставляет полный набор функций для работы с локальными данными: от просмотра схемы таблиц до выполнения сложных SQL-запросов и редактирования записей.

Просмотр таблиц и схемы

В левой панели отображаются все базы данных и таблицы. При выборе таблицы открывается её содержимое в виде таблицы с колонками: все поля записи отображаются как колонки, каждая строка — отдельная запись. Схема таблицы (имя, тип, constraints) отображается сверху. Для внешних ключей показываются связи между таблицами.

Тип данныхSQLite типRoom типПример
Целое числоINTEGERInt, Long42
СтрокаTEXTString"John"
Дробное числоREALDouble, Float3.14
Бинарные данныеBLOBByteArray[0x00, 0x01]
Дата/времяINTEGER (Unix epoch)Long, Date1720000000

Выполнение SQL-запросов

Вкладка Query позволяет выполнять произвольные SQL-команды напрямую к выбранной базе данных. Поддерживаются SELECT, INSERT, UPDATE, DELETE, CREATE INDEX, JOIN и любые другие SQL-операторы SQLite. Результаты отображаются в табличном виде под редактором запросов. История запросов сохраняется в течение сессии.

Редактирование записей

Ячейки таблицы можно редактировать напрямую — достаточно кликнуть на значение и ввести новое. Изменения применяются немедленно к работающему приложению. Это особенно полезно для тестирования граничных случаев: установка null в обязательное поле, замена ID на несуществующий, проверка обработки длинных строк. Все изменения фиксируются в реальном времени.

Отладка Room с Database Inspector

Database Inspector имеет глубокую интеграцию с Room, что делает его незаменимым при разработке приложений с этой библиотекой. Помимо стандартного функционала, инспектор предоставляет специфические для Room возможности.

Просмотр DAO-запросов

Для Room-баз Database Inspector показывает сгенерированные SQL-запросы для каждого DAO-метода. Это позволяет убедиться, что Room генерирует корректный SQL, особенно для сложных запросов с JOIN, @Relation и @Transaction. Если Room выполняет неэффективный запрос (например, N+1 запросов вместо одного JOIN), это сразу видно в логе запросов Database Inspector.

Отладка миграций

При обновлении схемы Room с AutoMigration или ручными миграциями Database Inspector показывает актуальную структуру таблиц после миграции. Достаточно открыть инспектор после запуска приложения и проверить, что все колонки, индексы и внешние ключи созданы корректно. Если миграция упала с ошибкой, база данных не откроется — инструмент покажет последнюю доступную версию.

Проверка Relations и Embedded

Room позволяет объединять данные из нескольких таблиц через @Relation и @Embedded. Database Inspector помогает визуально проверить корректность связей, отображая данные связанных таблиц рядом. Для каждого внешнего ключа можно перейти к связанной таблице одним кликом.

kotlin
// 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

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 для анализа плана выполнения.

Часто задаваемые вопросы

Почему Database Inspector не видит мою базу данных?

Убедитесь, что приложение запущено в Debug-режиме, а API Level устройства — 26 или выше. Если база создаётся в отдельном процессе или с использованием SQLCipher (шифрование), Database Inspector может не обнаружить её. Для SQLCipher используйте вспомогательную debug-базу без шифрования.

Можно ли редактировать данные через Database Inspector?

Да, редактирование данных возможно напрямую в ячейках таблицы. Двойной клик по значению позволяет его изменить. Изменения немедленно применяются к базе данных работающего приложения. Для добавления новых записей используйте SQL-запрос INSERT через вкладку Query.

Поддерживает ли Database Inspector базы данных Realm?

Нет, Database Inspector не поддерживает Realm, поскольку Realm не использует SQLite. Для отладки Realm используйте Realm Object Server, Realm Studio или логирование в приложении. Для MongoDB Realm SDK доступен собственный инструмент Realm Studio для macOS, Windows и Linux.

Как экспортировать базу данных из Database Inspector?

Database Inspector позволяет экспортировать базу данных целиком. Кликните правой кнопкой мыши по имени базы в списке и выберите Export Database. Файл .db сохранится на компьютере. Для просмотра используйте любой SQLite-браузер, например DB Browser for SQLite.

Влияет ли Database Inspector на производительность приложения?

По данным Google, накладные расходы минимальны — Database Inspector читает WAL-файлы базы данных, не блокируя запись. Выполнение пользовательских SQL-запросов может временно нагружать базу, но это контролируется разработчиком. Для production-сборок инструмент автоматически отключается.

Итоги

  • Database Inspector — это встроенный в Android Studio инструмент для просмотра и редактирования SQLite-баз данных приложения в реальном времени
  • Поддержка Room включает просмотр DAO-запросов, отладку миграций и проверку @Relation и @Embedded
  • Выполнение SQL-запросов через вкладку Query с поддержкой всех операторов SQLite и сохранением истории
  • Редактирование в реальном времени позволяет изменять значения ячеек и сразу видеть результат в работающем приложении
  • Экспорт базы данных в .db файл для анализа в сторонних инструментах или передачи коллегам
  • Для работы требуется Android Studio 4.1+, Debug-сборка и API Level 26+ — проверьте эти требования, если инструмент не отображает базу
  • Используйте Database Inspector на регулярной основе при разработке функций, связанных с локальным хранением данных — это ускоряет отладку в разы

Мы разработаем мобильное приложение под ключ

IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

Читайте также