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, 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.
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.
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, 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.
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.
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.
// 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, 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.
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ı | INTEGER | Int, Long | 42 |
| Dizi | TEXT | String | "John" |
| Ondalık Sayı | REAL | Double, Float | 3.14 |
| İkili Veri | BLOB | ByteArray | [0x00, 0x01] |
| Tarih/Saat | INTEGER (Unix epoch) | Long, Date | 1720000000 |
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.
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, 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.
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.
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.
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.
// 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, 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.
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.
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.
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.
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
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.
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.
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, 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.
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
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.
Ayrıca okuyun