Database Inspector trong Android Studio là một công cụ tích hợp để xem và gỡ lỗi cơ sở dữ liệu SQLite của ứng dụng di động theo thời gian thực. Theo tài liệu chính thức của Android Developers (2025), công cụ cho phép thực thi truy vấn SQL trên cơ sở dữ liệu đang hoạt động, xem cấu trúc bảng và chỉnh sửa bản ghi mà không cần dừng ứng dụng. Công cụ hỗ trợ Room, SQLiteOpenHelper và bất kỳ cơ sở dữ liệu nội bộ nào, tự động phát hiện chúng khi bắt đầu lập hồ sơ.
Những điểm chính
Database Inspector là một công cụ của Android Studio để kiểm tra và gỡ lỗi cơ sở dữ liệu cục bộ trong ứng dụng di động. Nó cho phép xem tất cả cơ sở dữ liệu SQLite được tạo bởi ứng dụng, bao gồm cơ sở dữ liệu Room, SQLiteOpenHelper và các thư viện bên thứ ba. Công cụ có sẵn từ Android Studio 4.1 và có thể được khởi chạy qua Android Profiler hoặc trực tiếp từ menu View.
Mục đích chính của Database Inspector là trực quan hóa dữ liệu trong quá trình phát triển. Thay vì xuất nội dung cơ sở dữ liệu ra nhật ký hoặc viết một màn hình riêng để xem dữ liệu, nhà phát triển có thể mở Database Inspector và xem ngay lập tức tất cả các bảng, lược đồ và nội dung của chúng. Công cụ hỗ trợ cả cơ sở dữ liệu SQLite quan hệ và Room với tính năng tự động di chuyển.
Công cụ này không thể thiếu trong các kịch bản khi bạn cần xác minh tính chính xác của việc lưu trữ dữ liệu sau khi thực hiện một thao tác: đăng ký người dùng, đồng bộ hóa với máy chủ, lưu cache danh sách. Thay vì viết giao diện kiểm thử, bản sao cơ sở dữ liệu được xem qua Database Inspector. Công cụ cũng được sử dụng tích cực để gỡ lỗi di chuyển Room — bạn có thể xem lược đồ bảng thực tế sau mỗi lần cập nhật lược đồ.
Database Inspector kết nối với tiến trình của ứng dụng Android thông qua Android Profiler Service. Nó phát hiện tất cả các kết nối SQLite đang mở trong ứng dụng và hiển thị chúng trong bảng điều khiển bên cạnh. Yêu cầu bản dựng Debug của ứng dụng với API Level 26 (Android 8.0) trở lên.
Khi khởi chạy, Database Inspector tạo một đường hầm ADB giữa ứng dụng trên thiết bị và IDE trên máy tính. Các tệp cơ sở dữ liệu SQLite WAL (Write-Ahead Logging) được truyền qua đường hầm này để hiển thị nội dung. Các lệnh SQL được gửi trực tiếp đến SQLite Engine của ứng dụng thông qua hỗ trợ Database Inspector trong Room và SQLiteDatabase. Công cụ tự động phát hiện khi ứng dụng mở cơ sở dữ liệu và thêm nó vào danh sách được kiểm tra.
Để Database Inspector hoạt động chính xác, bạn cần: Android Studio 4.1+, thiết bị hoặc trình giả lập có API Level 26+, và bản dựng Debug của ứng dụng. Đối với Room, cần thêm thư viện room-runtime phiên bản 2.2+. Nếu cơ sở dữ liệu được tạo ở chế độ WAL, là tiêu chuẩn cho Room 2.2+, công cụ có thể đọc dữ liệu mà không chặn ứng dụng chính.
// Ví dụ cơ sở dữ liệu Room được Database Inspector hỗ trợ
@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 cung cấp bộ chức năng đầy đủ để làm việc với dữ liệu cục bộ: từ xem lược đồ bảng đến thực thi truy vấn SQL phức tạp và chỉnh sửa bản ghi.
Bảng điều khiển bên trái hiển thị tất cả cơ sở dữ liệu và bảng. Khi chọn một bảng, nội dung của nó được hiển thị dưới dạng bảng với các cột: tất cả trường bản ghi được hiển thị dưới dạng cột, mỗi hàng là một bản ghi riêng biệt. Lược đồ bảng (tên, loại, ràng buộc) được hiển thị ở phía trên. Đối với khóa ngoại, mối quan hệ giữa các bảng được hiển thị.
| Loại dữ liệu | Loại SQLite | Loại Room | Ví dụ |
|---|---|---|---|
| Số nguyên | INTEGER | Int, Long | 42 |
| Chuỗi | TEXT | String | "John" |
| Số thập phân | REAL | Double, Float | 3.14 |
| Dữ liệu nhị phân | BLOB | ByteArray | [0x00, 0x01] |
| Ngày/Giờ | INTEGER (Unix epoch) | Long, Date | 1720000000 |
Tab Query cho phép thực thi các lệnh SQL tùy ý trực tiếp trên cơ sở dữ liệu đã chọn. SELECT, INSERT, UPDATE, DELETE, CREATE INDEX, JOIN và bất kỳ toán tử SQLite nào khác đều được hỗ trợ. Kết quả được hiển thị dưới dạng bảng bên dưới trình soạn thảo truy vấn. Lịch sử truy vấn được lưu giữ trong suốt phiên làm việc.
Các ô bảng có thể được chỉnh sửa trực tiếp — chỉ cần nhấp vào giá trị và nhập giá trị mới. Các thay đổi được áp dụng ngay lập tức cho ứng dụng đang chạy. Điều này đặc biệt hữu ích để kiểm tra các trường hợp biên: đặt null trong trường bắt buộc, thay thế ID bằng ID không tồn tại, kiểm tra xử lý chuỗi dài. Tất cả các thay đổi được cam kết theo thời gian thực.
Database Inspector có tích hợp sâu với Room, khiến nó trở nên không thể thiếu khi phát triển ứng dụng với thư viện này. Ngoài chức năng tiêu chuẩn, thanh tra còn cung cấp các khả năng dành riêng cho Room.
Đối với cơ sở dữ liệu Room, Database Inspector hiển thị truy vấn SQL được tạo cho mỗi phương thức DAO. Điều này cho phép bạn xác minh rằng Room tạo SQL chính xác, đặc biệt là đối với các truy vấn phức tạp với JOIN, @Relation và @Transaction. Nếu Room thực thi một truy vấn không hiệu quả (ví dụ: N+1 truy vấn thay vì một JOIN duy nhất), điều đó sẽ hiển thị ngay lập tức trong nhật ký truy vấn của Database Inspector.
Khi cập nhật lược đồ Room với AutoMigration hoặc di chuyển thủ công, Database Inspector hiển thị cấu trúc bảng thực tế sau khi di chuyển. Chỉ cần mở thanh tra sau khi khởi chạy ứng dụng và kiểm tra xem tất cả các cột, chỉ mục và khóa ngoại đã được tạo chính xác hay chưa. Nếu di chuyển thất bại với lỗi, cơ sở dữ liệu sẽ không mở — công cụ sẽ hiển thị phiên bản khả dụng cuối cùng.
Room cho phép kết hợp dữ liệu từ nhiều bảng thông qua @Relation và @Embedded. Database Inspector giúp xác minh trực quan tính chính xác của các mối quan hệ bằng cách hiển thị dữ liệu bảng liên quan cạnh nhau. Đối với mỗi khóa ngoại, bạn có thể điều hướng đến bảng liên quan chỉ bằng một cú nhấp chuột.
// Entity với Relation để kiểm tra qua 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 giải quyết các tác vụ phát triển cụ thể phát sinh khi làm việc với lưu trữ dữ liệu cục bộ. Hãy xem xét các trường hợp sử dụng phổ biến nhất của công cụ trong công việc hàng ngày.
Thông thường, ứng dụng lưu cache phản hồi API trong cơ sở dữ liệu cục bộ. Database Inspector cho phép bạn xác minh tính chính xác của việc lưu cache: sau khi đồng bộ hóa, bạn có thể thấy các bản ghi thực tế trong bảng cache. Nếu dữ liệu không xuất hiện — vấn đề nằm ở mã lưu. Nếu xuất hiện bản sao — vấn đề nằm ở logic upsert.
Khi phương thức DAO không lưu dữ liệu nhưng không ném ngoại lệ, Database Inspector hiển thị trạng thái thực tế của bảng. Nguyên nhân điển hình: xung đột Primary Key (cài đặt OnConflictStrategy), loại dữ liệu không chính xác trong cột, vi phạm ràng buộc NOT NULL hoặc vi phạm Foreign Key. Thanh tra cho phép bạn xem tập hợp thay đổi của cơ sở dữ liệu trước và sau thao tác. So sánh ảnh chụp dữ liệu trước và sau khi gọi DAO là một trong những cách hiệu quả nhất để gỡ lỗi lỗi giao dịch và xác minh tính chính xác của logic kinh doanh ứng dụng trong các thao tác ghi phức tạp.
Khi thay đổi lược đồ bảng — thêm cột, đổi tên trường, chia bảng — Database Inspector giúp xác minh kết quả di chuyển. Chỉ cần khởi chạy ứng dụng với phiên bản cơ sở dữ liệu mới và xác minh rằng tất cả dữ liệu đã được chuyển chính xác sang cấu trúc mới. Nếu dữ liệu bị thiếu sau khi di chuyển, bạn có thể khôi phục chúng từ bản sao đã lưu trước khi tái cấu trúc. Kịch bản này đặc biệt phù hợp khi di chuyển từ SQLiteOpenHelper sang Room hoặc khi thay đổi cấu trúc bảng hiện có trong phiên bản mới của ứng dụng.
Database Inspector cũng có thể được sử dụng để đánh giá hiệu suất truy vấn SQL. Bằng cách thực thi SELECT qua tab Query và đo thời gian phản hồi, bạn có thể xác định các truy vấn thiếu chỉ mục. Room tự động ghi nhật ký các truy vấn chậm trong Logcat với thẻ SLOW SQL và Database Inspector cho phép bạn thực thi ngay lập tức EXPLAIN QUERY PLAN để phân tích kế hoạch thực thi.
Các câu hỏi thường gặp
Đảm bảo ứng dụng đang chạy ở chế độ Debug và API Level của thiết bị là 26 trở lên. Nếu cơ sở dữ liệu được tạo trong một tiến trình riêng biệt hoặc sử dụng SQLCipher (mã hóa), Database Inspector có thể không phát hiện được nó. Đối với SQLCipher, hãy sử dụng cơ sở dữ liệu gỡ lỗi phụ trợ không mã hóa.
Có, chỉnh sửa dữ liệu có thể thực hiện trực tiếp trong các ô bảng. Nhấp đúp vào giá trị cho phép thay đổi nó. Các thay đổi được áp dụng ngay lập tức cho cơ sở dữ liệu của ứng dụng đang chạy. Để thêm bản ghi mới, hãy sử dụng truy vấn SQL INSERT qua tab Query.
Không, Database Inspector không hỗ trợ Realm vì Realm không sử dụng SQLite. Để gỡ lỗi Realm, hãy sử dụng Realm Object Server, Realm Studio hoặc ghi nhật ký trong ứng dụng. Đối với MongoDB Realm SDK, công cụ Realm Studio có sẵn cho macOS, Windows và Linux.
Database Inspector cho phép bạn xuất toàn bộ cơ sở dữ liệu. Nhấp chuột phải vào tên cơ sở dữ liệu trong danh sách và chọn Export Database. Tệp .db sẽ được lưu vào máy tính của bạn. Để xem nó, hãy sử dụng bất kỳ trình duyệt SQLite nào, chẳng hạn như DB Browser for SQLite.
Theo Google, chi phí là tối thiểu — Database Inspector đọc tệp WAL cơ sở dữ liệu mà không chặn ghi. Việc thực thi truy vấn SQL tùy chỉnh có thể tạm thời tải cơ sở dữ liệu, nhưng điều này được kiểm soát bởi nhà phát triển. Công cụ tự động bị vô hiệu hóa cho các bản dựng sản xuất.
Tóm tắt
Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay
IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.
Đọc thêm