Database Inspector: co to jest, jak pracować z SQLite i debugować Room

Autor: IT Sectr Opublikowano: 2026-05-07 Czas czytania: 8 min

Database Inspector w Android Studio — to wbudowane narzędzie do przeglądania i debugowania baz danych SQLite aplikacji mobilnej w czasie rzeczywistym. Według oficjalnej dokumentacji Android Developers (2025), narzędzie umożliwia wykonywanie zapytań SQL do aktywnej bazy, przeglądanie struktury tabel i edycję rekordów bez zatrzymywania aplikacji. Narzędzie obsługuje Room, SQLiteOpenHelper i dowolne bazy danych in-app, automatycznie wykrywając je podczas uruchamiania profilowania.

Najważniejsze

  • Database Inspector — to komponent Android Studio do przeglądania baz danych SQLite aplikacji w czasie rzeczywistym z możliwością wykonywania zapytań
  • Obsługa Room — pełna integracja z Room, w tym przeglądanie zapytań DAO i śledzenie zmian w bazie danych
  • Edycja danych — zmiana wartości komórek tabeli bezpośrednio z interfejsu inspektora z natychmiastowym odzwierciedleniem w aplikacji
  • Wykonywanie SQL — możliwość pisania i wykonywania dowolnych zapytań SQL, w tym JOIN, GROUP BY i podzapytań
  • Eksport bazy — zapisanie dumpu bazy danych na komputer do analizy lub przekazania współpracownikom

Czym jest Database Inspector?

Database Inspector — to narzędzie Android Studio do inspekcji i debugowania lokalnych baz danych w aplikacji mobilnej. Pozwala przeglądać wszystkie bazy SQLite utworzone przez aplikację, w tym bazy Room, SQLiteOpenHelper i bibliotek zewnętrznych. Narzędzie jest dostępne od Android Studio 4.1 i uruchamiane przez Android Profiler lub bezpośrednio z menu View.

Przeznaczenie i możliwości

Głównym zadaniem Database Inspector jest wizualizacja danych w procesie programowania. Zamiast wypisywać zawartość bazy w logu lub pisać osobny ekran do przeglądania danych, programista może otworzyć Database Inspector i od razu zobaczyć wszystkie tabele, ich schemat i zawartość. Narzędzie obsługuje zarówno relacyjne bazy SQLite, jak i Room z Auto-migracjami.

Kiedy używać Database Inspector

Narzędzie jest niezastąpione w scenariuszach, gdy trzeba sprawdzić poprawność zapisu danych po wykonaniu operacji: rejestracja użytkownika, synchronizacja z serwerem, buforowanie list. Zamiast pisać testowy UI, dump bazy jest przeglądany przez Database Inspector. Narzędzie jest również aktywnie używane do debugowania migracji Room — można zobaczyć aktualny schemat tabel po każdej aktualizacji schematu.

Jak działa Database Inspector

Database Inspector łączy się z procesem aplikacji Android przez Android Profiler Service. Wykrywa wszystkie otwarte połączenia SQLite w aplikacji i wyświetla je w panelu bocznym. Do działania wymaga Debug-kompilacji aplikacji z API Level 26 (Android 8.0) i wyższym.

Architektura i mechanizm działania

Po uruchomieniu Database Inspector tworzy tunel ADB między aplikacją na urządzeniu a IDE na komputerze. Pliki WAL (Write-Ahead Logging) bazy danych SQLite są przesyłane przez ten tunel w celu wyświetlenia zawartości. Polecenia SQL są wysyłane bezpośrednio do silnika SQLite aplikacji poprzez obsługę Database Inspector w Room i SQLiteDatabase. Narzędzie automatycznie wykrywa moment otwarcia bazy danych przez aplikację i dodaje ją do listy inspekcji.

Wymagania środowiskowe

Do poprawnego działania Database Inspector wymaga: Android Studio 4.1+, urządzenia lub emulatora z API Level 26+, Debug-kompilacji aplikacji. Dla Room dodatkowo wymagana jest biblioteka room-runtime w wersji 2.2+. Jeśli baza danych jest tworzona w trybie WAL, co jest standardem dla Room 2.2+, narzędzie może czytać dane bez blokowania głównej aplikacji.

kotlin
// Przykład bazy danych Room obsługiwanej przez 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
}

Główne funkcje Database Inspector

Database Inspector zapewnia pełen zestaw funkcji do pracy z danymi lokalnymi: od przeglądania schematu tabel po wykonywanie złożonych zapytań SQL i edycję rekordów.

Przeglądanie tabel i schematu

W lewym panelu wyświetlane są wszystkie bazy danych i tabele. Po wybraniu tabeli otwiera się jej zawartość w formie tabeli z kolumnami: wszystkie pola rekordu są wyświetlane jako kolumny, każdy wiersz to osobny rekord. Schemat tabeli (nazwa, typ, ograniczenia) jest wyświetlany u góry. Dla kluczy obcych pokazywane są powiązania między tabelami.

Typ danychTyp SQLiteTyp RoomPrzykład
Liczba całkowitaINTEGERInt, Long42
Ciąg znakówTEXTString„John”
Liczba zmiennoprzecinkowaREALDouble, Float3.14
Dane binarneBLOBByteArray[0x00, 0x01]
Data/czasINTEGER (Unix epoch)Long, Date1720000000

Wykonywanie zapytań SQL

Zakładka Query umożliwia wykonywanie dowolnych poleceń SQL bezpośrednio na wybranej bazie danych. Obsługiwane są SELECT, INSERT, UPDATE, DELETE, CREATE INDEX, JOIN i wszelkie inne operatory SQL SQLite. Wyniki są wyświetlane w formie tabeli pod edytorem zapytań. Historia zapytań jest zapisywana w trakcie sesji.

Edycja rekordów

Komórki tabeli można edytować bezpośrednio — wystarczy kliknąć wartość i wprowadzić nową. Zmiany są stosowane natychmiastowo do działającej aplikacji. Jest to szczególnie przydatne do testowania przypadków brzegowych: ustawienie null w polu obowiązkowym, zamiana ID na nieistniejący, sprawdzanie obsługi długich ciągów. Wszystkie zmiany są rejestrowane w czasie rzeczywistym.

Debugowanie Room z Database Inspector

Database Inspector ma głęboką integrację z Room, co czyni go niezastąpionym przy tworzeniu aplikacji z tą biblioteką. Oprócz standardowej funkcjonalności, inspektor zapewnia specyficzne dla Room możliwości.

Przeglądanie zapytań DAO

Dla baz Room Database Inspector pokazuje wygenerowane zapytania SQL dla każdej metody DAO. Pozwala to upewnić się, że Room generuje poprawny SQL, szczególnie dla złożonych zapytań z JOIN, @Relation i @Transaction. Jeśli Room wykonuje nieefektywne zapytanie (np. N+1 zapytań zamiast jednego JOIN), jest to od razu widoczne w logu zapytań Database Inspector.

Debugowanie migracji

Podczas aktualizacji schematu Room z AutoMigration lub ręcznymi migracjami Database Inspector pokazuje aktualną strukturę tabel po migracji. Wystarczy otworzyć inspektora po uruchomieniu aplikacji i sprawdzić, czy wszystkie kolumny, indeksy i klucze obce zostały utworzone poprawnie. Jeśli migracja zakończyła się błędem, baza danych się nie otworzy — narzędzie pokaże ostatnią dostępną wersję.

Sprawdzanie Relations i Embedded

Room umożliwia łączenie danych z wielu tabel przez @Relation i @Embedded. Database Inspector pomaga wizualnie sprawdzić poprawność powiązań, wyświetlając dane powiązanych tabel obok siebie. Dla każdego klucza obcego można przejść do powiązanej tabeli jednym kliknięciem.

kotlin
// Entity z Relation do sprawdzenia przez 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>
)

Praktyczne scenariusze użycia Database Inspector

Database Inspector rozwiązuje konkretne zadania programistyczne, które pojawiają się przy pracy z lokalnym przechowywaniem danych. Rozważmy najczęstsze scenariusze użycia narzędzia w codziennej pracy.

Sprawdzanie buforowania danych

Często aplikacja buforuje odpowiedzi API w lokalnej bazie danych. Database Inspector pozwala upewnić się o poprawności buforowania: po wykonaniu synchronizacji można zobaczyć aktualne rekordy w tabeli bufora. Jeśli dane się nie pojawiły — problem leży w kodzie zapisu. Jeśli pojawiły się duplikaty — problem w logice upsert.

Debugowanie błędów wstawiania danych

Gdy metoda DAO nie zapisuje danych, ale nie zgłasza wyjątku, Database Inspector pokazuje aktualny stan tabeli. Typowe przyczyny: konflikt Primary Key (ustawienie OnConflictStrategy), nieprawidłowy typ danych w kolumnie, naruszenie ograniczeń NOT NULL lub Foreign Key violation. Inspektor pozwala zobaczyć changeset bazy przed i po operacji. Porównanie migawek danych przed i po wywołaniu DAO — to jeden z najskuteczniejszych sposobów debugowania błędów transakcyjnych i sprawdzania poprawności logiki biznesowej aplikacji przy złożonych operacjach zapisu.

Refaktoryzacja schematu bazy danych

Podczas zmiany schematu tabel — dodawania kolumn, zmiany nazw pól, dzielenia tabel — Database Inspector pomaga sprawdzić wynik migracji. Wystarczy uruchomić aplikację z nową wersją bazy i upewnić się, że wszystkie dane zostały poprawnie przeniesione do nowej struktury. Jeśli po migracji dane zniknęły, można je przywrócić z dumpu zapisanego przed refaktoryzacją. Ten scenariusz jest szczególnie aktualny przy przejściu z SQLiteOpenHelper na Room lub przy zmianie struktury istniejących tabel w nowej wersji aplikacji.

Monitorowanie wydajności zapytań

Database Inspector może być również używany do oceny wydajności zapytań SQL. Wykonując SELECT przez zakładkę Query i mierząc czas odpowiedzi, można zidentyfikować zapytania, którym brakuje indeksów. Room automatycznie loguje wolne zapytania w Logcat z oznaczeniem SLOW SQL, a Database Inspector pozwala natychmiast wykonać EXPLAIN QUERY PLAN do analizy planu wykonania.

Często zadawane pytania

Dlaczego Database Inspector nie widzi mojej bazy danych?

Upewnij się, że aplikacja jest uruchomiona w trybie Debug, a API Level urządzenia wynosi 26 lub więcej. Jeśli baza jest tworzona w osobnym procesie lub z użyciem SQLCipher (szyfrowanie), Database Inspector może jej nie wykryć. Dla SQLCipher użyj pomocniczej debug-bazy bez szyfrowania.

Czy można edytować dane przez Database Inspector?

Tak, edycja danych jest możliwa bezpośrednio w komórkach tabeli. Podwójne kliknięcie wartości pozwala ją zmienić. Zmiany są natychmiastowo stosowane do bazy danych działającej aplikacji. Do dodawania nowych rekordów użyj zapytania SQL INSERT przez zakładkę Query.

Czy Database Inspector obsługuje bazy danych Realm?

Nie, Database Inspector nie obsługuje Realm, ponieważ Realm nie używa SQLite. Do debugowania Realm używaj Realm Object Server, Realm Studio lub logowania w aplikacji. Dla MongoDB Realm SDK dostępne jest własne narzędzie Realm Studio dla macOS, Windows i Linux.

Jak wyeksportować bazę danych z Database Inspector?

Database Inspector umożliwia eksportowanie bazy danych w całości. Kliknij prawym przyciskiem myszy na nazwę bazy na liście i wybierz Export Database. Plik .db zostanie zapisany na komputerze. Do przeglądania użyj dowolnej przeglądarki SQLite, np. DB Browser for SQLite.

Czy Database Inspector wpływa na wydajność aplikacji?

Według Google, narzut jest minimalny — Database Inspector czyta pliki WAL bazy danych, nie blokując zapisu. Wykonywanie własnych zapytań SQL może tymczasowo obciążać bazę, ale jest to kontrolowane przez programistę. Dla kompilacji produkcyjnych narzędzie automatycznie się wyłącza.

Podsumowanie

  • Database Inspector — to wbudowane w Android Studio narzędzie do przeglądania i edycji baz danych SQLite aplikacji w czasie rzeczywistym
  • Obsługa Room obejmuje przeglądanie zapytań DAO, debugowanie migracji i sprawdzanie @Relation i @Embedded
  • Wykonywanie zapytań SQL przez zakładkę Query z obsługą wszystkich operatorów SQLite i zapisywaniem historii
  • Edycja w czasie rzeczywistym umożliwia zmianę wartości komórek i natychmiastowe zobaczenie wyniku w działającej aplikacji
  • Eksport bazy danych do pliku .db do analizy w zewnętrznych narzędziach lub przekazania współpracownikom
  • Do działania wymagane jest Android Studio 4.1+, Debug-kompilacja i API Level 26+ — sprawdź te wymagania, jeśli narzędzie nie wyświetla bazy
  • Używaj Database Inspector regularnie podczas tworzenia funkcji związanych z lokalnym przechowywaniem danych — przyspiesza to debugowanie wielokrotnie

Opracujemy aplikację mobilną pod klucz

IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.

Omów projekt

Przeczytaj również