Gỡ lỗi cơ sở dữ liệu bằng Trình kiểm tra cơ sở dữ liệu

Trình kiểm tra cơ sở dữ liệu cho phép bạn kiểm tra, truy vấn và sửa đổi cơ sở dữ liệu của ứng dụng trong khi ứng dụng đang chạy. Điều này đặc biệt hữu ích khi gỡ lỗi cơ sở dữ liệu. Trình kiểm tra cơ sở dữ liệu hoạt động với SQLite thuần tuý và với các thư viện được xây dựng dựa trên SQLite, chẳng hạn như Room.

Mở Trình kiểm tra cơ sở dữ liệu

Để mở một cơ sở dữ liệu trong Trình kiểm tra cơ sở dữ liệu, hãy làm như sau:

  1. Chạy ứng dụng trên trình mô phỏng hoặc thiết bị đã kết nối chạy API cấp 26 trở lên.

  2. Trên thanh trình đơn, hãy chọn View > Tool Windows > App Inspection (Xem > Cửa sổ công cụ > Kiểm tra ứng dụng).

  3. Chọn thẻ Database Inspector (Trình kiểm tra cơ sở dữ liệu).

  4. Chọn quy trình đang chạy ứng dụng trong trình đơn.

  5. Cơ sở dữ liệu trong ứng dụng hiện đang chạy sẽ xuất hiện trong ngăn Databases (Cơ sở dữ liệu). Mở rộng nút cho cơ sở dữ liệu mà bạn muốn kiểm tra.

Xem và sửa đổi dữ liệu

Ngăn Databases (Cơ sở dữ liệu) cho thấy một danh sách các cơ sở dữ liệu trong ứng dụng và các bảng mà mỗi cơ sở dữ liệu chứa. Nhấp đúp vào tên bảng để hiện dữ liệu trong cửa sổ trình kiểm tra ở bên phải, như minh hoạ trong hình 1. Nhấp vào tiêu đề cột để sắp xếp dữ liệu trong cửa sổ trình kiểm tra theo cột đó.

Ảnh chụp màn hình cửa sổ Trình kiểm tra cơ sở dữ liệu.
Hình 1. Cửa sổ Trình kiểm tra cơ sở dữ liệu.

Để sửa đổi dữ liệu trong một bảng, hãy làm theo các bước sau:

  1. Nhấp đúp vào một ô.
  2. Nhập một giá trị mới.
  3. Nhấn Enter.

Nếu ứng dụng của bạn sử dụng Room và giao diện người dùng của bạn quan sát cơ sở dữ liệu (chẳng hạn như với LiveData hoặc Flow) thì mọi thay đổi bạn thực hiện đối với dữ liệu sẽ xuất hiện ngay trong ứng dụng đang chạy. Nếu không, các thay đổi chỉ xuất hiện vào lần tiếp theo khi ứng dụng của bạn đọc dữ liệu được sửa đổi.

Xem các thay đổi đối với cơ sở dữ liệu trực tiếp

Nếu bạn muốn Trình kiểm tra cơ sở dữ liệu tự động cập nhật dữ liệu hiển thị khi bạn tương tác với ứng dụng đang chạy, hãy chọn hộp kiểm Live updates (Cập nhật trực tiếp) ở đầu cửa sổ công cụ kiểm tra. Khi bật tính năng cập nhật trực tiếp, bảng trong cửa sổ trình kiểm tra sẽ chuyển sang chế độ chỉ đọc và bạn không thể sửa đổi các giá trị của bảng đó.

Ngoài ra, để cập nhật dữ liệu theo cách thủ công, hãy nhấp vào nút Làm mới bảng ở đầu cửa sổ trình kiểm tra.

Truy vấn cơ sở dữ liệu của bạn

Trình kiểm tra cơ sở dữ liệu có thể chạy các truy vấn đối với cơ sở dữ liệu của ứng dụng trong khi ứng dụng đang chạy. Công cụ này có thể sử dụng các truy vấn DAO nếu ứng dụng của bạn dùng Room, nhưng cũng hỗ trợ các truy vấn SQL tuỳ chỉnh.

Chạy truy vấn DAO

Nếu ứng dụng của bạn sử dụng Room, Android Studio sẽ cung cấp các thao tác định hướng cho phép bạn chạy nhanh các phương thức truy vấn mà bạn đã xác định trong các lớp DAO của mình. Những thao tác này có sẵn trong khi ứng dụng của bạn đang chạy và Trình kiểm tra cơ sở dữ liệu đang mở trong IDE.

Để chạy một phương thức truy vấn nào đó trong DAO, hãy nhấp vào nút Chạy câu lệnh SQLite trong Trình kiểm tra cơ sở dữ liệu bên cạnh chú thích @Query của phương thức đó.

Ảnh chụp màn hình các thao tác định hướng cho truy vấn DAO.
Hình 2. Thao tác định hướng cho truy vấn DAO.

Nếu ứng dụng của bạn có nhiều cơ sở dữ liệu, thì Android Studio sẽ nhắc bạn chọn cơ sở dữ liệu để truy vấn trong một danh sách. Nếu trong phương thức truy vấn của bạn có tham số ràng buộc (bind parameters), thì Android Studio sẽ yêu cầu các giá trị cho mỗi tham số trước khi chạy truy vấn đó. Kết quả truy vấn sẽ xuất hiện trong cửa sổ của trình kiểm tra.

Chạy truy vấn SQL tuỳ chỉnh

Bạn cũng có thể sử dụng Trình kiểm tra cơ sở dữ liệu để chạy truy vấn SQL tuỳ chỉnh dựa trên cơ sở dữ liệu của ứng dụng trong khi ứng dụng đang chạy.

Để truy vấn cơ sở dữ liệu, hãy làm theo các bước sau:

  1. Nhấp vào biểu tượng Open New Query tab (Mở thẻ Truy vấn mới) ở đầu ngăn Databases (Cơ sở dữ liệu) để mở một thẻ mới trong cửa sổ trình kiểm tra.

    Ảnh chụp màn hình cho thấy nút thẻ truy vấn mới.
    Hình 3. Mở thẻ New Query (Truy vấn mới).
  2. Nếu ứng dụng của bạn có nhiều cơ sở dữ liệu, hãy chọn cơ sở dữ liệu để truy vấn trong danh sách thả xuống trên thẻ New Query (Truy vấn mới).

  3. Ở đầu thẻ New Query (Truy vấn mới), hãy nhập truy vấn SQL tuỳ chỉnh vào trường văn bản.

  4. Nhấp vào Run (Chạy).

Ngoài ra, bạn có thể dùng tính năng nhật ký truy vấn để chạy truy vấn mà bạn đã từng dùng:

  1. Nhấp vào nút Hiển thị nhật ký truy vấn Nút hiện nhật ký truy vấn
để xem danh sách các truy vấn mà bạn đã chạy trước đây dựa trên cơ sở dữ liệu đã chọn.

    Ảnh chụp màn hình trình đơn thả xuống cho nhật ký truy vấn.
    Hình 4. Trình đơn nhật ký truy vấn.
  2. Nhấp vào một truy vấn trong danh sách để xem trước truy vấn đầy đủ trong trình chỉnh sửa rồi nhấn Enter để sao chép truy vấn đó vào trình chỉnh sửa.

  3. Nhấp vào Run (Chạy) để thực thi câu lệnh.

Kết quả truy vấn hiển thị trong thẻ New Query (Truy vấn mới) ở chế độ chỉ có thể đọc và không thể sửa đổi. Tuy nhiên, bạn có thể sử dụng trường truy vấn SQL tuỳ chỉnh để chạy các câu lệnh có đối tượng sửa đổi như UPDATE, INSERT hoặc DELETE.

Nếu ứng dụng của bạn sử dụng Room và giao diện người dùng của bạn quan sát cơ sở dữ liệu (chẳng hạn như với LiveData hoặc Flow) thì mọi thay đổi bạn thực hiện đối với dữ liệu sẽ xuất hiện ngay trong ứng dụng đang chạy. Nếu không, các thay đổi chỉ xuất hiện vào lần tiếp theo khi ứng dụng của bạn đọc dữ liệu được sửa đổi.

Chế độ ngoại tuyến

Trong Android Studio phiên bản 4.2 trở lên, bạn có thể tiếp tục kiểm tra cơ sở dữ liệu của ứng dụng sau khi quá trình ngắt kết nối. Thao tác này giúp việc gỡ lỗi ứng dụng của bạn diễn ra dễ dàng hơn sau khi gặp sự cố.

Khi hiện tượng ngắt kết nối xảy ra, Trình kiểm tra cơ sở dữ liệu sẽ tải cơ sở dữ liệu của bạn xuống và cung cấp cho bạn ở chế độ ngoại tuyến. Khi không có mạng, bạn vẫn có thể mở bảng và chạy các truy vấn.

Khi bạn kết nối lại với quy trình ứng dụng trực tiếp, Trình kiểm tra cơ sở dữ liệu sẽ thoát khỏi chế độ ngoại tuyến và chỉ hiển thị cho bạn dữ liệu có trên thiết bị. Nói cách khác, dữ liệu bạn thấy ở chế độ ngoại tuyến sẽ không tồn tại khi kết nối lại với quy trình ứng dụng. Do hạn chế này, Trình kiểm tra cơ sở dữ liệu không cho phép bạn chỉnh sửa dữ liệu hoặc chạy câu lệnh SQL sửa đổi khi ở chế độ ngoại tuyến.

Khi bạn xem một cơ sở dữ liệu ở chế độ ngoại tuyến, tên quy trình sẽ có thêm chữ [DETACHED] để cho biết trình kiểm tra không còn được đính kèm vào quy trình này. Ngoài ra, biểu tượng cơ sở dữ liệu Cơ sở dữ liệu ngoại tuyến cho biết trạng thái ngoại tuyến, như trong hình 5.

Trình kiểm tra cơ sở dữ liệu ở chế độ ngoại tuyến
Hình 5. Trình kiểm tra cơ sở dữ liệu ở chế độ ngoại tuyến.

Giữ cho kết nối cơ sở dữ liệu luôn mở

Trình kiểm tra cơ sở dữ liệu chỉ có thể sửa đổi một cơ sở dữ liệu khi ứng dụng của bạn duy trì kết nối trực tiếp với cơ sở dữ liệu đó. Điều đó có nghĩa là nếu ứng dụng của bạn thường xuyên kết nối và ngắt kết nối khỏi các cơ sở dữ liệu, thì việc gỡ lỗi các cơ sở dữ liệu đó rất khó khăn. Ngăn Databases (Cơ sở dữ liệu) sử dụng các biểu tượng để xác định cơ sở dữ liệu đang mở và cơ sở dữ liệu đã đóng .

Ngoài ra, để ngăn không cho kết nối cơ sở dữ liệu bị ngắt, hãy chuyển chế độ Keep database connections open (Giữ cho kết nối cơ sở dữ liệu luôn mở) từ tắt sang bật tại phần trên cùng của ngăn Databases (Cơ sở dữ liệu)

Xuất dữ liệu trên Trình kiểm tra cơ sở dữ liệu

Bạn có thể xuất cơ sở dữ liệu, bảng và kết quả truy vấn trong Trình kiểm tra cơ sở dữ liệu để lưu, chia sẻ hoặc tạo lại cục bộ. Khi mở dự án ứng dụng trong Android Studio và kiểm tra ứng dụng cho dự án đó trong Trình kiểm tra cơ sở dữ liệu, bạn có thể bắt đầu xuất dữ liệu theo một trong những cách sau:

  • Chọn một cơ sở dữ liệu hoặc bảng trong ngăn Databases (Cơ sở dữ liệu) rồi nhấp vào Export to file (Xuất sang tệp) ở gần đầu bảng.
  • Nhấp chuột phải vào một cơ sở dữ liệu hoặc bảng trong ngăn Databases (Cơ sở dữ liệu), rồi chọn Export to file (Xuất sang tệp) trên trình đơn theo bối cảnh.
  • Khi kiểm tra một bảng hoặc kết quả truy vấn trong một thẻ, hãy nhấp vào Export to file (Xuất sang tệp) ở phía trên bảng hoặc kết quả truy vấn đó.

Sau khi chọn một hành động xuất, hãy sử dụng hộp thoại Export Database (Xuất cơ sở dữ liệu) để giúp bạn thực hiện các bước cuối cùng, như trong hình 6.

Tuỳ thuộc vào việc bạn đang cố gắng xuất cơ sở dữ liệu, bảng hay kết quả truy vấn, bạn có thể chọn xuất dữ liệu ở một hoặc nhiều định dạng sau: DB, SQL hoặc CSV.

Hộp thoại Xuất cơ sở dữ liệu

Hình 6. Hộp thoại Xuất cơ sở dữ liệu.

Tài nguyên khác

Để tìm hiểu thêm về Trình kiểm tra cơ sở dữ liệu, hãy xem các tài nguyên khác sau đây:

Bài đăng trên blog

Video