使用数据库检查器调试您的数据库

数据库检查器可让您在应用运行时检查、查询和修改应用的数据库。这对于数据库调试特别有用。数据库检查器适用于纯 SQLite 以及在 SQLite 之上构建的库,例如 Room

打开数据库检查器

要在数据库检查器中打开数据库,请执行以下操作

  1. 在运行 API 级别 26 或更高版本的模拟器或连接设备上运行您的应用

  2. 在菜单栏中,选择 View > Tool Windows > App Inspection

  3. 选择 Database Inspector 标签页。

  4. 从菜单中选择正在运行的应用进程。

  5. 当前正在运行的应用中的数据库会显示在 Databases 窗格中。展开要检查的数据库的节点。

查看和修改数据

Databases 窗格会显示您的应用中的数据库列表以及每个数据库包含的表。双击表名即可在右侧的检查器窗口中显示其数据,如图 1 所示。点击列标题可按该列对检查器窗口中的数据进行排序。

Screenshot of the Database Inspector window.
图 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 按钮。

Screenshot of DAO gutter actions.
图 2. DAO 查询行槽操作。

如果您的应用包含多个数据库,Android Studio 会提示您从列表中选择要查询的数据库。如果您的查询方法包含命名绑定参数,Android Studio 会在运行查询之前请求每个参数的值。查询结果显示在检查器窗口中。

运行自定义 SQL 查询

您还可以使用数据库检查器在应用运行时对您的应用数据库运行自定义 SQL 查询。

要查询数据库,请执行以下步骤

  1. 点击 Databases 窗格顶部的 Open New Query tab ,在检查器窗口中打开一个新标签页。

    Screenshot indicating the new query tab button.
    图 3. 打开 New Query 标签页。
  2. 如果您的应用包含多个数据库,请从 New Query 标签页上的列表中选择要查询的数据库。

  3. New Query 标签页的顶部,在文本字段中键入您的自定义 SQL 查询。

  4. 点击 Run

或者,使用查询历史记录功能运行您之前使用过的查询

  1. 点击 Show query history Show query history button 按钮,查看您之前对所选数据库运行的查询列表。

    Screenshot showing the query history drop-down.
    图 4. 查询历史记录菜单。
  2. 点击列表中的查询,在编辑器中预览完整查询,然后按下 Enter 键将其复制到编辑器。

  3. 点击 Run 执行语句。

New Query 标签页中显示的查询结果是只读的,无法修改。但是,您可以使用自定义 SQL 查询字段运行修改语句,例如 UPDATEINSERTDELETE

如果您的应用使用 Room 并且您的 UI 观察数据库(例如使用 LiveDataFlow),那么您对数据所做的任何更改都会立即在您运行的应用中可见。否则,更改仅在您的应用下次从数据库读取修改后的数据时可见。

离线模式

在 Android Studio 4.2 及更高版本中,您可以在进程断开连接后继续检查应用的数据库。这使得在应用崩溃后调试应用变得更容易。

当发生断开连接时,数据库检查器会下载您的数据库,并以离线模式向您提供这些数据库。离线时,您仍然可以打开表并运行查询。

当您重新连接到实时应用进程时,数据库检查器会退出离线模式,并且仅显示设备上的数据。换句话说,离线模式下显示的数据在您重新连接到应用进程时不会持久保留。由于此限制,数据库检查器不允许您在离线模式下编辑数据或运行修改 SQL 语句。

在离线模式下查看数据库时,进程名称会包含 [DETACHED],表示检查器已不再附加到该进程。此外,数据库图标 Database offline 表示离线状态,如图 5 所示。

Database inspector in offline mode
图 5. 离线模式下的数据库检查器。

保持数据库连接开放

数据库检查器只能在您的应用保持与该数据库的实时连接时修改数据库。这意味着如果您的应用频繁连接和断开数据库,调试这些数据库可能会很困难。Databases 窗格使用图标来标识打开的 和关闭的 数据库。

此外,为防止数据库连接关闭,请在 Databases 窗格顶部将 Keep database connections open 从关闭 切换到打开

从数据库检查器导出数据

您可以从数据库检查器导出数据库、表和查询结果,以便进行保存、共享或在本地重新创建。当您在 Android Studio 中打开一个应用项目并在数据库检查器中检查该项目的应用时,可以通过以下任一方式开始导出数据:

  • Databases 面板中选择一个数据库或表,然后点击面板顶部附近的 Export to file
  • 右键点击 Databases 面板中的数据库或表,然后从上下文菜单中选择 Export to file
  • 在标签页中检查表或查询结果时,点击表或查询结果上方的 Export to file

选择导出操作后,使用 Export Database 对话框帮助您完成最后步骤,如图 6 所示。

根据您尝试导出数据库、表还是查询结果,您可以选择以下一种或多种格式导出数据:DB、SQL 或 CSV。

Export Database dialog
box

图 6. Export Database 对话框。

其他资源

要详细了解数据库检查器,请参阅以下其他资源

博客文章

视频