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 คือ การแสดงภาพข้อมูลระหว่างการพัฒนา แทนที่จะส่งออกเนื้อหาฐานข้อมูลไปยังล็อกหรือเขียนหน้าจอแยกต่างหากสำหรับดูข้อมูล นักพัฒนาสามารถเปิด Database Inspector และดูตารางทั้งหมด โครงสร้างและเนื้อหาได้ทันที เครื่องมือรองรับทั้งฐานข้อมูล SQLite แบบเชิงสัมพันธ์และ Room ที่มีการโยกย้ายอัตโนมัติ
เครื่องมือนี้จำเป็นในสถานการณ์ที่คุณต้องการ ตรวจสอบความถูกต้องของการจัดเก็บข้อมูล หลังจากดำเนินการ: การลงทะเบียนผู้ใช้ การซิงโครไนซ์กับเซิร์ฟเวอร์ การแคชรายการ แทนที่จะเขียน UI ทดสอบ ดัมพ์ฐานข้อมูลจะถูกดูผ่าน Database Inspector เครื่องมือยังใช้อย่างแข็งขันในการดีบักการโยกย้าย Room — คุณสามารถดูโครงสร้างตารางจริงหลังจากการอัปเดตโครงสร้างแต่ละครั้ง
Database Inspector เชื่อมต่อกับกระบวนการ ของแอปพลิเคชัน Android ผ่าน Android Profiler Service ตรวจจับการเชื่อมต่อ SQLite ที่เปิดอยู่ทั้งหมดในแอปพลิเคชันและแสดงในแผงด้านข้าง จำเป็นต้องมีบิลด์ Debug ของแอปพลิเคชันด้วย API Level 26 (Android 8.0) ขึ้นไป
เมื่อเปิดใช้ Database Inspector จะสร้าง อุโมงค์ ADB ระหว่างแอปพลิเคชันบนอุปกรณ์และ IDE บนคอมพิวเตอร์ ไฟล์ฐานข้อมูล SQLite WAL (Write-Ahead Logging) จะถูกสตรีมผ่านอุโมงค์นี้เพื่อแสดงเนื้อหา คำสั่ง SQL จะถูกส่งไปยัง SQLite Engine ของแอปพลิเคชันโดยตรงผ่านการรองรับ 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 ด้วยค่าที่ไม่มีอยู่ การตรวจสอบการจัดการสตริงยาว การเปลี่ยนแปลงทั้งหมดจะถูกคอมมิตแบบเรียลไทม์
Database Inspector มี การทำงานร่วมกับ Room อย่างลึกซึ้ง ทำให้จำเป็นเมื่อพัฒนาแอปพลิเคชันด้วยไลบรารีนี้ นอกเหนือจากฟังก์ชันมาตรฐานแล้ว ผู้ตรวจสอบยังมีความสามารถเฉพาะของ Room
สำหรับฐานข้อมูล Room Database Inspector จะแสดง คิวรี SQL ที่สร้างขึ้น สำหรับแต่ละเมธอด DAO ช่วยให้คุณตรวจสอบว่า Room สร้าง SQL ที่ถูกต้อง โดยเฉพาะอย่างยิ่งสำหรับคิวรีที่ซับซ้อนด้วย JOIN, @Relation และ @Transaction หาก Room ดำเนินการคิวรีที่ไม่มีประสิทธิภาพ (เช่น คิวรี N+1 แทน JOIN เดียว) จะเห็นได้ทันทีในล็อกคิวรีของ 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 ผู้ตรวจสอบช่วยให้คุณเห็นชุดการเปลี่ยนแปลงของฐานข้อมูลก่อนและหลังการดำเนินการ การเปรียบเทียบภาพรวมข้อมูลก่อนและหลังการเรียก DAO เป็นหนึ่งในวิธีที่มีประสิทธิภาพที่สุดในการดีบักข้อผิดพลาดด้านธุรกรรมและตรวจสอบความถูกต้องของตรรกะทางธุรกิจของแอปพลิเคชันระหว่างการดำเนินการเขียนที่ซับซ้อน
เมื่อเปลี่ยนโครงสร้างตาราง — การเพิ่มคอลัมน์ การเปลี่ยนชื่อฟิลด์ การแบ่งตาราง — Database Inspector ช่วยตรวจสอบผลลัพธ์การโยกย้าย เพียงเปิดแอปพลิเคชันด้วยเวอร์ชันฐานข้อมูลใหม่และตรวจสอบว่าข้อมูลทั้งหมดถูกถ่ายโอนไปยังโครงสร้างใหม่อย่างถูกต้อง หากข้อมูลหายไปหลังการโยกย้าย คุณสามารถกู้คืนจากดัมพ์ที่บันทึกไว้ก่อนการปรับโครงสร้าง สถานการณ์นี้เกี่ยวข้องโดยเฉพาะเมื่อโยกย้ายจาก SQLiteOpenHelper ไปยัง Room หรือเมื่อเปลี่ยนโครงสร้างของตารางที่มีอยู่ในเวอร์ชันใหม่ของแอปพลิเคชัน
Database Inspector ยังสามารถใช้สำหรับ การประเมินประสิทธิภาพคิวรี SQL โดยการดำเนินการ SELECT ผ่านแท็บ Query และวัดเวลาในการตอบสนอง คุณสามารถระบุคิวรีที่ขาดดัชนี Room จะบันทึกคิวรีช้าใน Logcat โดยอัตโนมัติด้วยแท็ก SLOW SQL และ Database Inspector ช่วยให้คุณดำเนินการ EXPLAIN QUERY PLAN ทันทีเพื่อวิเคราะห์แผนการดำเนินการ
คำถามที่พบบ่อย
ตรวจสอบให้แน่ใจว่าแอปพลิเคชันกำลังทำงานใน โหมด Debug และ API Level ของอุปกรณ์คือ 26 ขึ้นไป หากฐานข้อมูลถูกสร้างในกระบวนการแยกต่างหากหรือใช้ SQLCipher (การเข้ารหัส) Database Inspector อาจตรวจไม่พบ สำหรับ SQLCipher ให้ใช้ฐานข้อมูลดีบักเสริมโดยไม่มีการเข้ารหัส
ได้ การแก้ไขข้อมูล สามารถทำได้โดยตรงในเซลล์ตาราง การดับเบิลคลิกที่ค่าช่วยให้คุณเปลี่ยนได้ การเปลี่ยนแปลงจะถูกนำไปใช้กับฐานข้อมูลของแอปพลิเคชันที่ทำงานทันที หากต้องการเพิ่มระเบียนใหม่ ให้ใช้คิวรี 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 ที่กำหนดเองอาจโหลดฐานข้อมูลชั่วคราว แต่สิ่งนี้ควบคุมโดยนักพัฒนา เครื่องมือจะถูกปิดใช้งานโดยอัตโนมัติสำหรับบิลด์โปรดักชัน
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ
อ่านเพิ่มเติม