Database Inspector: nedir, SQLite ile nasıl çalışılır ve Room hata ayıklama

Yazar: IT Sectr Yayınlanma: 2026-05-07 Okuma süresi: 8 dk

Android Studio'daki Database Inspector, mobil uygulamanın SQLite veritabanlarını gerçek zamanlı olarak görüntülemek ve hatalarını ayıklamak için yerleşik bir araçtır. Resmi Android Developers belgelerine (2025) göre araç, aktif veritabanında SQL sorguları yürütmeye, tablo yapılarını görüntülemeye ve uygulamayı durdurmadan kayıtları düzenlemeye olanak tanır. Araç, Room, SQLiteOpenHelper ve tüm uygulama içi veritabanlarını destekler ve profil oluşturma başladığında bunları otomatik olarak algılar.

Önemli Noktalar

  • Database Inspector, sorgu yürütme yeteneği ile uygulamanın SQLite veritabanlarını gerçek zamanlı olarak görüntülemek için bir Android Studio bileşenidir
  • Room Desteği — Room ile tam entegrasyon, DAO sorgularını görüntüleme ve veritabanındaki değişiklikleri izleme dahil
  • Veri Düzenleme — denetçi arayüzünden doğrudan tablo hücre değerlerini değiştirme ve uygulamada anında yansıma
  • SQL Yürütme — JOIN, GROUP BY ve alt sorgular dahil olmak üzere isteğe bağlı SQL sorguları yazma ve yürütme yeteneği
  • Veritabanı Dışa Aktarma — analiz veya meslektaşlarla paylaşma için bilgisayara veritabanı dökümü kaydetme

Database Inspector Nedir?

Database Inspector, mobil uygulamadaki yerel veritabanlarını incelemek ve hatalarını ayıklamak için bir Android Studio aracıdır. Room veritabanları, SQLiteOpenHelper ve üçüncü taraf kütüphaneler dahil olmak üzere uygulama tarafından oluşturulan tüm SQLite veritabanlarını görüntülemenize olanak tanır. Araç, Android Studio 4.1'den itibaren kullanılabilir ve Android Profiler aracılığıyla veya doğrudan View menüsünden başlatılabilir.

Amaç ve Yetenekler

Database Inspector'ın temel amacı, geliştirme sırasında veri görselleştirmedir. Veritabanı içeriğini günlüğe çıkarmak veya verileri görüntülemek için ayrı bir ekran yazmak yerine, geliştirici Database Inspector'ı açabilir ve tüm tabloları, şemalarını ve içeriklerini anında görebilir. Araç, hem ilişkisel SQLite veritabanlarını hem de Otomatik geçişli Room'u destekler.

Database Inspector Ne Zaman Kullanılmalı

Araç, bir işlem gerçekleştirdikten sonra veri depolamanın doğruluğunu doğrulamanız gereken senaryolarda vazgeçilmezdir: kullanıcı kaydı, sunucu senkronizasyonu, liste önbelleğe alma. Bir test arayüzü yazmak yerine, veritabanı dökümü Database Inspector aracılığıyla görüntülenir. Araç ayrıca Room geçişlerinde hata ayıklamak için aktif olarak kullanılır — her şema güncellemesinden sonra gerçek tablo şemasını görebilirsiniz.

Database Inspector Nasıl Çalışır

Database Inspector, Android Profiler Service aracılığıyla Android uygulamasının sürecine bağlanır. Uygulamadaki tüm açık SQLite bağlantılarını algılar ve bunları yan panelde görüntüler. API Düzeyi 26 (Android 8.0) ve üzeri olan uygulamanın Debug derlemesi gereklidir.

Mimari ve Mekanizma

Başlatıldığında, Database Inspector cihazdaki uygulama ile bilgisayardaki IDE arasında bir ADB tüneli oluşturur. SQLite WAL (Write-Ahead Logging) veritabanı dosyaları, içeriği görüntülemek için bu tünel üzerinden iletilir. SQL komutları, Room ve SQLiteDatabase'deki Database Inspector desteği aracılığıyla doğrudan uygulamanın SQLite Motoruna gönderilir. Araç, uygulamanın bir veritabanını ne zaman açtığını otomatik olarak algılar ve denetlenen listeye ekler.

Ortam Gereksinimleri

Database Inspector'ın doğru çalışması için ihtiyacınız olanlar: Android Studio 4.1+, API Düzeyi 26+ olan bir cihaz veya emülatör ve uygulamanın Debug derlemesi. Room için, ayrıca room-runtime kütüphanesi sürüm 2.2+ gereklidir. Veritabanı, Room 2.2+ için standart olan WAL modunda oluşturulmuşsa, araç ana uygulamayı engellemeden verileri okuyabilir.

kotlin
// Database Inspector tarafından desteklenen Room veritabanı örneği
@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'ın Temel Özellikleri

Database Inspector, tablo şemalarını görüntülemeden karmaşık SQL sorguları yürütmeye ve kayıtları düzenlemeye kadar yerel verilerle çalışmak için tam bir işlev seti sağlar.

Tabloları ve Şemayı Görüntüleme

Sol panelde tüm veritabanları ve tablolar görüntülenir. Bir tablo seçildiğinde, içeriği sütunlu bir tabloda gösterilir: tüm kayıt alanları sütun olarak gösterilir, her satır ayrı bir kayıttır. Tablo şeması (ad, tür, kısıtlamalar) üstte görüntülenir. Yabancı anahtarlar için tablolar arasındaki ilişkiler gösterilir.

Veri TürüSQLite TürüRoom TürüÖrnek
Tam SayıINTEGERInt, Long42
DiziTEXTString"John"
Ondalık SayıREALDouble, Float3.14
İkili VeriBLOBByteArray[0x00, 0x01]
Tarih/SaatINTEGER (Unix epoch)Long, Date1720000000

SQL Sorguları Yürütme

Query sekmesi, seçilen veritabanında doğrudan isteğe bağlı SQL komutları yürütmenize olanak tanır. SELECT, INSERT, UPDATE, DELETE, CREATE INDEX, JOIN ve diğer tüm SQLite operatörleri desteklenir. Sonuçlar, sorgu düzenleyicisinin altında tablo biçiminde görüntülenir. Sorgu geçmişi oturum boyunca korunur.

Kayıtları Düzenleme

Tablo hücreleri doğrudan düzenlenebilir — bir değere tıklayın ve yeni bir değer girin. Değişiklikler, çalışan uygulamaya anında uygulanır. Bu, sınır durumlarını test etmek için özellikle kullanışlıdır: zorunlu bir alana null atama, bir ID'yi var olmayanla değiştirme, uzun dizelerin işlenmesini kontrol etme. Tüm değişiklikler gerçek zamanlı olarak kaydedilir.

Database Inspector ile Room Hata Ayıklama

Database Inspector, Room ile derin bir entegrasyona sahiptir ve bu kütüphane ile uygulama geliştirirken onu vazgeçilmez kılar. Standart işlevselliğe ek olarak, denetçi Room'a özel yetenekler sağlar.

DAO Sorgularını Görüntüleme

Room veritabanları için Database Inspector, her DAO yöntemi için oluşturulan SQL sorgularını gösterir. Bu, özellikle JOIN, @Relation ve @Transaction ile karmaşık sorgular için Room'un doğru SQL oluşturduğunu doğrulamanıza olanak tanır. Room verimsiz bir sorgu yürütürse (örneğin, tek bir JOIN yerine N+1 sorgu), bu Database Inspector sorgu günlüğünde hemen görünür.

Geçişlerde Hata Ayıklama

AutoMigration veya manuel geçişlerle Room şemasını güncellerken, Database Inspector geçişten sonra gerçek tablo yapısını gösterir. Uygulamayı başlattıktan sonra denetçiyi açın ve tüm sütunların, dizinlerin ve yabancı anahtarların doğru oluşturulup oluşturulmadığını kontrol edin. Bir geçiş hatayla başarısız olursa, veritabanı açılmaz — araç son kullanılabilir sürümü gösterir.

Relations ve Embedded Kontrolü

Room, @Relation ve @Embedded aracılığıyla birden çok tablodan veri birleştirmeye olanak tanır. Database Inspector, ilgili tablo verilerini yan yana görüntüleyerek ilişkilerin doğruluğunu görsel olarak doğrulamaya yardımcı olur. Her yabancı anahtar için, tek bir tıklamayla ilgili tabloya gidebilirsiniz.

kotlin
// Database Inspector aracılığıyla kontrol için Relation ile Entity
@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 için Pratik Kullanım Senaryoları

Database Inspector, yerel veri depolama ile çalışırken ortaya çıkan belirli geliştirme görevlerini çözer. Günlük çalışmada aracın en yaygın kullanım durumlarına bakalım.

Veri Önbelleğini Kontrol Etme

Genellikle, bir uygulama API yanıtlarını yerel bir veritabanında önbelleğe alır. Database Inspector, önbelleğe almanın doğruluğunu doğrulamanıza olanak tanır: senkronizasyondan sonra, önbellek tablosundaki gerçek kayıtları görebilirsiniz. Veri görünmüyorsa — sorun kaydetme kodundadır. Kopyalar görünüyorsa — sorun upsert mantığındadır.

Veri Ekleme Hatalarında Ayıklama

Bir DAO yöntemi verileri kaydetmediğinde ancak bir istisna fırlatmadığında, Database Inspector tablonun gerçek durumunu gösterir. Tipik nedenler: Primary Key çatışması (OnConflictStrategy ayarı), bir sütunda yanlış veri türü, NOT NULL kısıtlaması ihlali veya Yabancı Anahtar ihlali. Denetçi, işlem öncesi ve sonrası veritabanı değişiklik setini görmenizi sağlar. Bir DAO çağrısı öncesi ve sonrası veri anlık görüntülerini karşılaştırmak, işlem hatalarında ayıklama yapmanın ve karmaşık yazma işlemleri sırasında uygulama iş mantığının doğruluğunu doğrulamanın en etkili yollarından biridir.

Veritabanı Şemasını Yeniden Düzenleme

Tablo şemasını değiştirirken — sütun ekleme, alanları yeniden adlandırma, tabloları bölme — Database Inspector geçiş sonucunu doğrulamaya yardımcı olur. Yeni veritabanı sürümüyle uygulamayı başlatın ve tüm verilerin yeni yapıya doğru şekilde aktarıldığını doğrulayın. Geçişten sonra veri eksikse, yeniden düzenlemeden önce kaydedilmiş bir dökümden geri yükleyebilirsiniz. Bu senaryo, SQLiteOpenHelper'dan Room'a geçiş yaparken veya uygulamanın yeni bir sürümünde mevcut tabloların yapısını değiştirirken özellikle önemlidir.

Sorgu Performansını İzleme

Database Inspector ayrıca SQL sorgu performansını değerlendirmek için de kullanılabilir. Query sekmesi aracılığıyla SELECT yürüterek ve yanıt süresini ölçerek, dizinlerden yoksun sorguları belirleyebilirsiniz. Room, yavaş sorguları otomatik olarak Logcat'te SLOW SQL etiketiyle günlüğe kaydeder ve Database Inspector, yürütme planı analizi için hemen EXPLAIN QUERY PLAN yürütmenize olanak tanır.

Sıkça Sorulan Sorular

Database Inspector neden veritabanımı görmüyor?

Uygulamanın Debug modunda çalıştığından ve cihazın API Düzeyinin 26 veya daha yüksek olduğundan emin olun. Veritabanı ayrı bir işlemde veya SQLCipher (şifreleme) kullanılarak oluşturulmuşsa, Database Inspector onu algılayamayabilir. SQLCipher için şifreleme olmadan yardımcı bir hata ayıklama veritabanı kullanın.

Database Inspector aracılığıyla veri düzenlenebilir mi?

Evet, veri düzenleme doğrudan tablo hücrelerinde mümkündür. Bir değere çift tıklamak onu değiştirmenize olanak tanır. Değişiklikler, çalışan uygulamanın veritabanına anında uygulanır. Yeni kayıtlar eklemek için Query sekmesi aracılığıyla INSERT SQL sorgusu kullanın.

Database Inspector Realm veritabanlarını destekliyor mu?

Hayır, Database Inspector Realm'i desteklemez çünkü Realm SQLite kullanmaz. Realm'de hata ayıklamak için Realm Object Server, Realm Studio veya uygulama içi günlük kullanın. MongoDB Realm SDK için Realm Studio aracı macOS, Windows ve Linux için kullanılabilir.

Database Inspector'dan veritabanı nasıl dışa aktarılır?

Database Inspector, tüm veritabanını dışa aktarmanıza olanak tanır. Listede veritabanı adına sağ tıklayın ve Export Database'i seçin. .db dosyası bilgisayarınıza kaydedilecektir. Görüntülemek için DB Browser for SQLite gibi herhangi bir SQLite tarayıcısı kullanın.

Database Inspector uygulama performansını etkiler mi?

Google'a göre, ek yük minimumdur — Database Inspector, yazmaları engellemeden WAL veritabanı dosyalarını okur. Özel SQL sorgularının yürütülmesi veritabanını geçici olarak yükleyebilir, ancak bu geliştirici tarafından kontrol edilir. Araç, üretim derlemeleri için otomatik olarak devre dışı bırakılır.

Özet

  • Database Inspector, bir uygulamanın SQLite veritabanlarını gerçek zamanlı olarak görüntülemek ve düzenlemek için Android Studio'ya yerleşik bir araçtır
  • Room Desteği, DAO sorgularını görüntüleme, geçişlerde hata ayıklama ve @Relation ile @Embedded'i kontrol etmeyi içerir
  • SQL Sorgu Yürütme, Query sekmesi aracılığıyla tüm SQLite operatörleri desteği ve geçmiş koruma ile
  • Gerçek Zamanlı Düzenleme, hücre değerlerini değiştirmenize ve çalışan uygulamada hemen sonucu görmenize olanak tanır
  • Veritabanı Dışa Aktarma, üçüncü taraf araçlarda analiz veya meslektaşlarla paylaşma için .db dosyasına
  • Android Studio 4.1+, Debug derlemesi ve API Düzeyi 26+ gerektirir — araç veritabanını göstermiyorsa bu gereksinimleri kontrol edin
  • Yerel veri depolama ile ilgili özellikler geliştirirken Database Inspector'ı düzenli olarak kullanın — hata ayıklamayı önemli ölçüde hızlandırır

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun