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

数据库检查器允许您在应用运行时检查、查询和修改应用的数据库。这对于数据库调试非常有用。数据库检查器适用于纯 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,那么您对数据所做的任何更改都会立即在运行的应用中显示。否则,更改仅在下一次应用从数据库读取修改后的数据时可见。

查看实时数据库更改

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

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

查询您的数据库

数据库检查器可以在应用运行时对应用的数据库运行查询。该工具可以使用 DAO 查询(如果您的应用使用 Room),但也支持自定义 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. 导出数据库对话框。

其他资源

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

博客文章

视频