Database Inspector در Android Studio — یک ابزار داخلی برای مشاهده و اشکالزدایی پایگاههای داده SQLite برنامه موبایل در زمان واقعی است. به گفته مستندات رسمی Android Developers (2025)، این ابزار امکان اجرای کوئریهای SQL به پایگاه داده فعال، مشاهده ساختار جداول و ویرایش رکوردها بدون توقف برنامه را فراهم میکند. ابزار از Room، SQLiteOpenHelper و هر پایگاه داده درونبرنامهای پشتیبانی میکند و به طور خودکار هنگام راهاندازی پروفایلسازی آنها را شناسایی میکند.
نکات اصلی
Database Inspector — ابزاری در Android Studio برای بازرسی و اشکالزدایی پایگاههای داده محلی در برنامه موبایل است. این ابزار امکان مشاهده تمام پایگاههای داده SQLite ایجاد شده توسط برنامه، از جمله پایگاههای Room، SQLiteOpenHelper و کتابخانههای شخص ثالث را فراهم میکند. این ابزار از Android Studio 4.1 در دسترس است و از طریق Android Profiler یا مستقیماً از منوی View راهاندازی میشود.
وظیفه اصلی Database Inspector تجسم دادهها در فرآیند توسعه است. به جای خروجی محتوای پایگاه داده در log یا نوشتن صفحه جداگانه برای مشاهده دادهها، توسعهدهنده میتواند Database Inspector را باز کند و بلافاصله تمام جداول، طرح و محتوای آنها را ببیند. این ابزار هم از پایگاههای داده رابطهای SQLite و هم Room با Auto-Migration پشتیبانی میکند.
این ابزار در سناریوهایی که نیاز به بررسی صحت ذخیرهسازی دادهها پس از انجام عملیات است ضروری است: ثبتنام کاربر، همگامسازی با سرور، کش کردن لیستها. به جای نوشتن UI آزمایشی، dump پایگاه داده از طریق Database Inspector مشاهده میشود. همچنین این ابزار به طور فعال برای اشکالزدایی مهاجرتهای Room استفاده میشود — میتوان پس از هر بهروزرسانی طرح، طرح فعلی جداول را مشاهده کرد.
Database Inspector به فرآیند برنامه Android از طریق Android Profiler Service متصل میشود. این ابزار تمام اتصالات باز SQLite در برنامه را شناسایی میکند و آنها را در پنل کناری نمایش میدهد. برای کار نیاز به بیلد Debug برنامه با API Level 26 (Android 8.0) و بالاتر است.
هنگام راهاندازی Database Inspector یک تونل ADB بین برنامه روی دستگاه و IDE روی رایانه ایجاد میکند. فایلهای WAL (Write-Ahead Logging) پایگاه داده SQLite از طریق این تونل برای نمایش محتوا منتقل میشوند. دستورات SQL مستقیماً به موتور SQLite برنامه از طریق پشتیبانی 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 و ویرایش رکوردها.
در پنل سمت چپ تمام پایگاههای داده و جداول نمایش داده میشوند. با انتخاب جدول، محتوای آن به صورت جدول با ستونها باز میشود: تمام فیلدهای رکورد به عنوان ستون نمایش داده میشوند، هر سطر یک رکورد جداگانه است. طرح جدول (نام، نوع، محدودیتها) در بالا نمایش داده میشود. برای کلیدهای خارجی، ارتباطات بین جداول نشان داده میشود.
| نوع داده | نوع 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 و هر عملگر دیگر SQLite پشتیبانی میشود. نتایج در زیر ویرایشگر کوئری به صورت جدول نمایش داده میشوند. تاریخچه کوئریها در طول جلسه ذخیره میشود.
سلولهای جدول را میتوان مستقیماً ویرایش کرد — کافیست روی مقدار کلیک کرده و مقدار جدید وارد کنید. تغییرات بلافاصله به برنامه در حال اجرا اعمال میشود. این به ویژه برای آزمایش موارد مرزی مفید است: تنظیم null در فیلد اجباری، جایگزینی ID با ID ناموجود، بررسی پردازش رشتههای طولانی. تمام تغییرات در زمان واقعی ثبت میشوند.
Database Inspector یکپارچگی عمیقی با Room دارد که آن را در توسعه برنامهها با این کتابخانه ضروری میکند. علاوه بر عملکرد استاندارد، بازرس قابلیتهای خاص Room را فراهم میکند.
برای پایگاههای Room، Database Inspector کوئریهای SQL تولید شده را برای هر متد DAO نشان میدهد. این امکان اطمینان از تولید SQL صحیح توسط Room را فراهم میکند، به ویژه برای کوئریهای پیچیده با JOIN، @Relation و @Transaction. اگر Room کوئری ناکارآمدی اجرا کند (مثلاً N+1 کوئری به جای یک JOIN)، بلافاصله در log کوئریهای 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 یا Foreign Key violation. بازرس امکان مشاهده changeset پایگاه داده قبل و بعد از عملیات را فراهم میکند. مقایسه تصاویر لحظهای دادهها قبل و بعد از فراخوانی DAO — یکی از مؤثرترین روشهای اشکالزدایی خطاهای تراکنشی و بررسی صحت منطق تجاری برنامه در عملیاتهای پیچیده نوشتن است.
هنگام تغییر طرح جداول — افزودن ستونها، تغییر نام فیلدها، تقسیم جداول — Database Inspector به بررسی نتیجه مهاجرت کمک میکند. کافیست برنامه را با نسخه جدید پایگاه داده راهاندازی کرده و مطمئن شوید تمام دادهها به درستی به ساختار جدید منتقل شدهاند. اگر پس از مهاجرت دادهها ناپدید شدند، میتوان آنها را از dump ذخیره شده قبل از بازآرایی بازیابی کرد. این سناریو به ویژه هنگام مهاجرت از SQLiteOpenHelper به Room یا هنگام تغییر ساختار جداول موجود در نسخه جدید برنامه مهم است.
Database Inspector همچنین میتواند برای ارزیابی عملکرد کوئریهای SQL استفاده شود. با اجرای SELECT از طریق زبانه Query و اندازهگیری زمان پاسخ، میتوان کوئریهایی را که ایندکس ندارند شناسایی کرد. Room به طور خودکار کوئریهای کند را در Logcat با برچسب SLOW SQL ثبت میکند و Database Inspector امکان اجرای فوری EXPLAIN QUERY PLAN برای تحلیل 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 از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید