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 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.
Читайте також