使用資料庫檢查器對資料庫偵錯

資料庫檢查器可檢查、查詢及修改應用程式的資料庫,特別適合用於資料庫偵錯。資料庫檢查器適用於一般的 SQLite 和以 SQLite 為基礎的程式庫,例如 Room

開啟資料庫檢查器

如要在資料庫檢查器中開啟資料庫,請按照下列步驟操作:

  1. 在執行 API 級別 26 以上的模擬器或已連結裝置上執行應用程式

  2. 從選單列中依序選取「View」>「Tool Windows」>「App Inspection」

  3. 選取「Database Inspector」分頁標籤。

  4. 從選單中選取正在執行的應用程式程序。

  5. 執行中應用程式的資料庫會顯示在「Databases」窗格中。針對您要檢查的資料庫展開節點。

查看及修改資料

「Databases」窗格會顯示應用程式內的資料庫清單,以及每個資料庫包含的資料表。在資料表名稱上按兩下,即可在右側的檢查器中顯示資料,如圖 1 所示。請按一下資料欄標題,按照該欄排序檢查器視窗中的資料。

資料庫檢查器視窗的螢幕截圖。
圖 1 資料庫檢查器視窗。

如要修改資料表中的資料,請遵循下列步驟操作:

  1. 按兩下儲存格。
  2. 輸入新的值。
  3. 按下 Enter 鍵。

如果您的應用程式使用 Room,且 UI 會觀察資料庫,例如使用 LiveDataFlow,則您對資料所做的任何變更都會立即顯示在執行中的應用程式。否則,只有在應用程式下次從資料庫讀取修改的資料時,才會顯示變更。

查看即時資料庫變更

如果希望資料庫檢查器會在您與執行中的應用程式互動時自動更新顯示的資料,請勾選檢查器視窗頂端的「Live updates」核取方塊。啟用即時更新時,檢查器視窗中的資料表為唯讀狀態,您無法修改其中的值。

或者,如要手動更新資料,請按一下檢查器視窗頂端的「Refresh table」按鈕。

查詢資料庫

資料庫檢查器可以在應用程式執行時,對應用程式資料庫執行查詢。如果您的應用程式使用 Room,這項工具就可以使用 DAO 查詢,但也支援自訂 SQL 查詢。

執行 DAO 查詢

如果您的應用程式使用 Room,Android Studio 會提供溝槽操作,可讓您快速執行已在 DAO 類別中定義的查詢方法。您可以在應用程式執行期間和 IDE 開啟資料庫檢查器的情況下執行這些動作。

如要在 DAO 中執行任何查詢方法,請按一下 @Query 註解旁的「Run SQLite statement in Database Inspector」 按鈕。

DAO 溝槽操作的螢幕截圖。
圖 2 DAO 查詢溝槽操作。

如果您的應用程式包含多個資料庫,Android Studio 會提示您從清單中選取要查詢的資料庫。如果查詢方法包含已命名的繫結參數,Android Studio 會在執行查詢前要求每個參數的值。查詢結果會顯示在檢查器視窗中。

執行自訂 SQL 查詢

您也可以使用資料庫檢查器,在應用程式執行期間,針對應用程式資料庫執行自訂 SQL 查詢。

如要查詢資料庫,請按照下列步驟操作:

  1. 按一下「Databases」窗格頂端的「Open New Query」分頁標籤 ,在檢查器視窗中開啟新分頁。

    顯示新查詢分頁按鈕的螢幕截圖。
    圖 3. 開啟「New Query」分頁。
  2. 如果您的應用程式包含多個資料庫,請從「New Query」分頁的清單中選取要查詢的資料庫。

  3. 在「New Query」分頁頂端的文字欄位中,輸入自訂 SQL 查詢。

  4. 按一下「Run」。

或者,使用查詢記錄功能來執行先前使用過的查詢:

  1. 按一下「Show query history」「Show query history」按鈕 按鈕,查看之前對所選資料庫執行的查詢清單。

    查詢記錄下拉式選單的螢幕截圖。
    圖 4. 查詢記錄選單。
  2. 點選清單中的查詢,在編輯器中預覽完整查詢內容,然後按下 Enter 鍵,將查詢複製到編輯器中。

  3. 按一下「Run」以執行陳述式。

「New Query」分頁中顯示的查詢結果是唯讀狀態,無法修改。不過,您也可以使用自訂 SQL 查詢欄位來執行 UPDATEINSERTDELETE 等修飾詞陳述式。

如果您的應用程式使用 Room,且 UI 會觀察資料庫,例如使用 LiveDataFlow,則您對資料所做的任何變更都會立即顯示在執行中的應用程式。否則,只有在應用程式下次從資料庫讀取修改的資料時,才會顯示變更。

離線模式

在 Android Studio 4.2 以上版本中,您可以在程序中斷後繼續檢查應用程式的資料庫,這樣在當機後能更輕鬆地對應用程式進行偵錯。

連線中斷時,資料庫檢查器會下載資料庫,供您在離線模式下存取。在離線狀態下,您可以開啟資料表並執行查詢。

重新連線至執行中的應用程式程序時,資料庫檢查器會退出離線模式,且只會顯示裝置上的資料。亦即當您與應用程式的處理序重新連線時,離線模式中顯示的資料不會被保留下來。基於這項限制,資料庫檢查器不允許您在離線模式下編輯資料或執行修改 SQL 陳述式。

以離線模式檢視資料庫時,程序名稱會包含 [DETACHED],表示檢查器已不再附加至該程序。此外,資料庫圖示 離線資料庫 表示離線狀態,如圖 5 所示。

處於離線模式的資料庫檢查器
圖 5. 處於離線模式的資料庫檢查器。

讓資料庫連線保持開啟

只有在應用程式與資料庫之間保持連線時,資料庫檢查器才能修改資料庫。換句話說,如果應用程式經常與資料庫重新連線或中斷連線,就很難對這些資料庫偵錯。「Databases」窗格會利用圖示來識別已開啟 和已關閉 的資料庫。

此外,如要防止關閉資料庫連線,請在「Databases」窗格頂端,將「讓資料庫連線保持開啟」從已關閉 切換為已開啟

從資料庫檢查器匯出資料

您可以從資料庫檢查器匯出資料庫、資料表和查詢結果,進而儲存、分享或在本機重新建立。在 Android Studio 中開啟應用程式專案,並在資料庫檢查工具中查看該專案的應用程式時,您可以採用下列其中一種方法開始匯出資料:

  • 在「Databases」面板中選取資料庫或資料表,然後按一下靠近面板頂端的「Export to file」
  • 在「Databases」面板中的資料庫或資料表上按一下滑鼠右鍵,然後從內容選單中選取「Export to file」
  • 如要在分頁中檢查資料表或查詢結果,按一下資料表或查詢結果上方的「Export to file」即可。

選擇匯出操作後,利用「Export Database」對話方塊協助您完成至最後步驟,如圖 6 所示。

視您想匯出資料庫、資料表或查詢結果而定,您可以選擇使用以下一或多種格式匯出資料:DB、SQL 或 CSV。

「Export Database」對話方塊

圖 6. 「Export Database」對話方塊。

其他資源

如要進一步瞭解資料庫檢查器,請參閱下列其他資源:

網誌文章

影片