Database Inspector: چیست، چگونه با SQLite کار کنیم و Room را اشکال‌زدایی کنیم

نویسنده: IT Sectr منتشر شده: 2026-05-07 زمان مطالعه: 8 دقیقه

Database Inspector در Android Studio — یک ابزار داخلی برای مشاهده و اشکال‌زدایی پایگاه‌های داده SQLite برنامه موبایل در زمان واقعی است. به گفته مستندات رسمی Android Developers (2025)، این ابزار امکان اجرای کوئری‌های SQL به پایگاه داده فعال، مشاهده ساختار جداول و ویرایش رکوردها بدون توقف برنامه را فراهم می‌کند. ابزار از Room، SQLiteOpenHelper و هر پایگاه داده درون‌برنامه‌ای پشتیبانی می‌کند و به طور خودکار هنگام راه‌اندازی پروفایل‌سازی آنها را شناسایی می‌کند.

نکات اصلی

  • Database Inspector — یک جزء Android Studio برای مشاهده پایگاه‌های داده SQLite برنامه در زمان واقعی با امکان اجرای کوئری‌ها است
  • پشتیبانی Room — یکپارچگی کامل با Room، شامل مشاهده کوئری‌های DAO و ردیابی تغییرات در پایگاه داده
  • ویرایش داده‌ها — تغییر مقادیر سلول‌های جدول مستقیماً از رابط بازرس با بازتاب فوری در برنامه
  • اجرای SQL — امکان نوشتن و اجرای کوئری‌های دلخواه SQL، شامل JOIN، GROUP BY و زیرکوئری‌ها
  • خروجی پایگاه داده — ذخیره dump پایگاه داده بر روی رایانه برای تحلیل یا ارسال به همکاران

Database Inspector چیست؟

Database Inspector — ابزاری در Android Studio برای بازرسی و اشکال‌زدایی پایگاه‌های داده محلی در برنامه موبایل است. این ابزار امکان مشاهده تمام پایگاه‌های داده SQLite ایجاد شده توسط برنامه، از جمله پایگاه‌های Room، SQLiteOpenHelper و کتابخانه‌های شخص ثالث را فراهم می‌کند. این ابزار از Android Studio 4.1 در دسترس است و از طریق Android Profiler یا مستقیماً از منوی View راه‌اندازی می‌شود.

هدف و قابلیت‌ها

وظیفه اصلی Database Inspector تجسم داده‌ها در فرآیند توسعه است. به جای خروجی محتوای پایگاه داده در log یا نوشتن صفحه جداگانه برای مشاهده داده‌ها، توسعه‌دهنده می‌تواند Database Inspector را باز کند و بلافاصله تمام جداول، طرح و محتوای آنها را ببیند. این ابزار هم از پایگاه‌های داده رابطه‌ای SQLite و هم Room با Auto-Migration پشتیبانی می‌کند.

چه زمانی از Database Inspector استفاده کنیم

این ابزار در سناریوهایی که نیاز به بررسی صحت ذخیره‌سازی داده‌ها پس از انجام عملیات است ضروری است: ثبت‌نام کاربر، همگام‌سازی با سرور، کش کردن لیست‌ها. به جای نوشتن UI آزمایشی، dump پایگاه داده از طریق Database Inspector مشاهده می‌شود. همچنین این ابزار به طور فعال برای اشکال‌زدایی مهاجرت‌های Room استفاده می‌شود — می‌توان پس از هر به‌روزرسانی طرح، طرح فعلی جداول را مشاهده کرد.

Database Inspector چگونه کار می‌کند

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+ استاندارد است، ابزار می‌تواند داده‌ها را بدون مسدود کردن برنامه اصلی بخواند.

kotlin
// نمونه پایگاه داده 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

Database Inspector مجموعه کاملی از عملکردها را برای کار با داده‌های محلی فراهم می‌کند: از مشاهده طرح جداول تا اجرای کوئری‌های پیچیده SQL و ویرایش رکوردها.

مشاهده جداول و طرح

در پنل سمت چپ تمام پایگاه‌های داده و جداول نمایش داده می‌شوند. با انتخاب جدول، محتوای آن به صورت جدول با ستون‌ها باز می‌شود: تمام فیلدهای رکورد به عنوان ستون نمایش داده می‌شوند، هر سطر یک رکورد جداگانه است. طرح جدول (نام، نوع، محدودیت‌ها) در بالا نمایش داده می‌شود. برای کلیدهای خارجی، ارتباطات بین جداول نشان داده می‌شود.

نوع دادهنوع SQLiteنوع Roomمثال
عدد صحیحINTEGERInt, Long42
رشتهTEXTString«John»
عدد اعشاریREALDouble, Float3.14
داده باینریBLOBByteArray[0x00, 0x01]
تاریخ/زمانINTEGER (Unix epoch)Long, Date1720000000

اجرای کوئری‌های SQL

زبانه Query امکان اجرای دستورات SQL دلخواه را مستقیماً روی پایگاه داده انتخاب شده فراهم می‌کند. SELECT، INSERT، UPDATE، DELETE، CREATE INDEX، JOIN و هر عملگر دیگر SQLite پشتیبانی می‌شود. نتایج در زیر ویرایشگر کوئری به صورت جدول نمایش داده می‌شوند. تاریخچه کوئری‌ها در طول جلسه ذخیره می‌شود.

ویرایش رکوردها

سلول‌های جدول را می‌توان مستقیماً ویرایش کرد — کافیست روی مقدار کلیک کرده و مقدار جدید وارد کنید. تغییرات بلافاصله به برنامه در حال اجرا اعمال می‌شود. این به ویژه برای آزمایش موارد مرزی مفید است: تنظیم null در فیلد اجباری، جایگزینی ID با ID ناموجود، بررسی پردازش رشته‌های طولانی. تمام تغییرات در زمان واقعی ثبت می‌شوند.

اشکال‌زدایی Room با Database Inspector

Database Inspector یکپارچگی عمیقی با Room دارد که آن را در توسعه برنامه‌ها با این کتابخانه ضروری می‌کند. علاوه بر عملکرد استاندارد، بازرس قابلیت‌های خاص Room را فراهم می‌کند.

مشاهده کوئری‌های DAO

برای پایگاه‌های Room، Database Inspector کوئری‌های SQL تولید شده را برای هر متد DAO نشان می‌دهد. این امکان اطمینان از تولید SQL صحیح توسط Room را فراهم می‌کند، به ویژه برای کوئری‌های پیچیده با JOIN، @Relation و @Transaction. اگر Room کوئری ناکارآمدی اجرا کند (مثلاً N+1 کوئری به جای یک JOIN)، بلافاصله در log کوئری‌های Database Inspector قابل مشاهده است.

اشکال‌زدایی مهاجرت‌ها

هنگام به‌روزرسانی طرح Room با AutoMigration یا مهاجرت‌های دستی، Database Inspector ساختار فعلی جداول را پس از مهاجرت نشان می‌دهد. کافیست پس از راه‌اندازی برنامه بازرس را باز کنید و بررسی کنید که تمام ستون‌ها، ایندکس‌ها و کلیدهای خارجی به درستی ایجاد شده‌اند. اگر مهاجرت با خطا مواجه شده باشد، پایگاه داده باز نخواهد شد — ابزار آخرین نسخه موجود را نشان می‌دهد.

بررسی Relations و Embedded

Room امکان ترکیب داده‌ها از چندین جدول را از طریق @Relation و @Embedded فراهم می‌کند. Database Inspector با نمایش داده‌های جداول مرتبط در کنار هم به بررسی بصری صحت ارتباطات کمک می‌کند. برای هر کلید خارجی می‌توان با یک کلیک به جدول مرتبط رفت.

kotlin
// 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

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 اجرا را فراهم می‌کند.

سوالات متداول

چرا Database Inspector پایگاه داده من را نمی‌بیند؟

مطمئن شوید برنامه در حالت Debug اجرا می‌شود و API Level دستگاه 26 یا بالاتر است. اگر پایگاه داده در فرآیند جداگانه یا با استفاده از SQLCipher (رمزگذاری) ایجاد شده باشد، Database Inspector ممکن است آن را تشخیص ندهد. برای SQLCipher از پایگاه داده debug کمکی بدون رمزگذاری استفاده کنید.

آیا می‌توان داده‌ها را از طریق Database Inspector ویرایش کرد؟

بله، ویرایش داده‌ها مستقیماً در سلول‌های جدول امکان‌پذیر است. دوبار کلیک روی مقدار امکان تغییر آن را فراهم می‌کند. تغییرات بلافاصله به پایگاه داده برنامه در حال اجرا اعمال می‌شود. برای افزودن رکوردهای جدید از کوئری SQL INSERT از طریق زبانه Query استفاده کنید.

آیا Database Inspector از پایگاه‌های داده Realm پشتیبانی می‌کند؟

خیر، Database Inspector از Realm پشتیبانی نمی‌کند، زیرا Realm از SQLite استفاده نمی‌کند. برای اشکال‌زدایی Realm از Realm Object Server، Realm Studio یا ثبت‌نام در برنامه استفاده کنید. برای MongoDB Realm SDK ابزار اختصاصی Realm Studio برای macOS، Windows و Linux در دسترس است.

چگونه پایگاه داده را از Database Inspector خروجی بگیریم؟

Database Inspector امکان خروجی گرفتن کامل پایگاه داده را فراهم می‌کند. روی نام پایگاه داده در لیست کلیک راست کرده و Export Database را انتخاب کنید. فایل .db روی رایانه ذخیره می‌شود. برای مشاهده از هر مرورگر SQLite مانند DB Browser for SQLite استفاده کنید.

آیا Database Inspector بر عملکرد برنامه تأثیر می‌گذارد؟

به گفته Google، سربار حداقل است — Database Inspector فایل‌های WAL پایگاه داده را می‌خواند بدون اینکه نوشتن را مسدود کند. اجرای کوئری‌های SQL سفارشی ممکن است موقتاً پایگاه داده را سنگین کند، اما این توسط توسعه‌دهنده کنترل می‌شود. برای بیلدهای production ابزار به طور خودکار غیرفعال می‌شود.

خلاصه

  • Database Inspector — ابزاری داخلی در Android Studio برای مشاهده و ویرایش پایگاه‌های داده SQLite برنامه در زمان واقعی
  • پشتیبانی Room شامل مشاهده کوئری‌های DAO، اشکال‌زدایی مهاجرت‌ها و بررسی @Relation و @Embedded
  • اجرای کوئری‌های SQL از طریق زبانه Query با پشتیبانی از تمام عملگرهای SQLite و ذخیره تاریخچه
  • ویرایش در زمان واقعی امکان تغییر مقادیر سلول‌ها و مشاهده فوری نتیجه در برنامه در حال اجرا
  • خروجی پایگاه داده به فایل .db برای تحلیل در ابزارهای خارجی یا ارسال به همکاران
  • برای کار نیاز به Android Studio 4.1+، بیلد Debug و API Level 26+ است — اگر ابزار پایگاه داده را نمایش نمی‌دهد این نیازمندی‌ها را بررسی کنید
  • هنگام توسعه عملکردهای مرتبط با ذخیره‌سازی محلی داده‌ها از Database Inspector به طور منظم استفاده کنید — این کار اشکال‌زدایی را چندین برابر سریع‌تر می‌کند

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید