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

数据库检查器允许您在应用运行时检查、查询和修改应用的数据库。这对于数据库调试特别有用。数据库检查器可与纯 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. 导出数据库对话框。

其他资源

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

博客文章

视频