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

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

打开数据库检查器

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

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

  2. 从菜单栏中,选择查看 > 工具窗口 > 应用检查

  3. 选择数据库检查器选项卡。

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

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

查看和修改数据

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

Screenshot of the Database Inspector window.
图 1. 数据库检查器窗口。

要修改表中的数据,请执行以下步骤

  1. 双击一个单元格。
  2. 键入新值。
  3. Enter

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

查看实时数据库更改

如果希望数据库检查器在您与正在运行的应用交互时自动更新其呈现的数据,请选中检查器窗口顶部的实时更新复选框。启用实时更新后,检查器窗口中的表为只读,您无法修改其值。

或者,要手动更新数据,请单击检查器窗口顶部的刷新表按钮。

查询您的数据库

数据库检查器可以在应用运行时对应用的数据库运行查询。如果您的应用使用 Room,则该工具可以使用 DAO 查询,但它也支持自定义 SQL 查询。

运行 DAO 查询

如果您的应用使用 Room,Android Studio 提供了代码辅助操作,使您能够快速运行已在 DAO 类 中定义的查询方法。这些操作在应用运行且 IDE 中打开数据库检查器时可用。

要运行 DAO 中的任何查询方法,请单击其 @Query 注解旁边的在数据库检查器中运行 SQLite 语句 按钮。

Screenshot of DAO gutter actions.
图 2. DAO 查询代码辅助操作。

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

运行自定义 SQL 查询

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

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

  1. 单击打开新查询选项卡 (位于数据库窗格的顶部)以在检查器窗口中打开一个新选项卡。

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

  3. 新查询选项卡的顶部,在文本字段中键入您的自定义 SQL 查询。

  4. 单击运行

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

  1. 单击显示查询历史记录 显示查询历史记录按钮 按钮以查看您之前对所选数据库运行的查询列表。

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

  3. 单击运行以执行语句。

显示在新查询选项卡中的查询结果为只读,无法修改。但是,您可以使用自定义 SQL 查询字段运行修改器语句,例如 UPDATEINSERTDELETE

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

脱机模式

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

当断开连接发生时,数据库检查器会下载您的数据库并使其在脱机模式下可用。脱机时,您仍然可以打开表和运行查询。

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

当您在脱机模式下查看数据库时,进程名称将包含 [DETACHED] 以指示检查器不再附加到该进程。此外,数据库图标 数据库脱机 表示脱机状态,如图 5 所示。

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

保持数据库连接打开

数据库检查器仅在您的应用维护与该数据库的实时连接时才能修改数据库。这意味着,如果您的应用频繁地连接和断开数据库连接,则可能难以调试这些数据库。数据库窗格使用图标来识别打开的 和关闭的 数据库。

此外,要防止数据库连接关闭,请将保持数据库连接打开从关闭 切换到打开 (位于数据库窗格的顶部)。

从数据库检查器导出数据

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

  • 数据库面板中选择一个数据库或表,然后单击面板顶部的导出到文件
  • 右键单击数据库面板中的数据库或表,然后从上下文菜单中选择导出到文件
  • 在选项卡中检查表或查询结果时,单击表或查询结果上方的导出到文件

选择导出操作后,使用导出数据库对话框完成后续步骤,如图 6 所示。

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

Export Database dialog
box

图 6. 导出数据库对话框。

其他资源

要了解有关数据库检查器的更多信息,请参阅以下其他资源

博文

视频