Database Inspector 允许您在应用运行时检查、查询和修改应用的数据库。这对于数据库调试特别有用。Database Inspector 既适用于普通 SQLite,也适用于基于 SQLite 构建的库(例如 Room)。
打开 Database Inspector
要在 Database Inspector 中打开数据库,请执行以下操作:
在模拟器或连接的设备上运行您的应用(需运行 API 26 或更高级别)。
从菜单栏中,选择 View > Tool Windows > App Inspection。
选择 Database Inspector 选项卡。
从菜单中选择正在运行的应用进程。
当前运行的应用中的数据库会显示在 Databases 窗格中。展开您要检查的数据库节点。
查看和修改数据
Databases 窗格会显示应用中数据库的列表以及每个数据库包含的表。双击表名即可在右侧的检查器窗口中显示其数据,如图 1 所示。单击列标题可按该列对检查器窗口中的数据进行排序。
要修改表中的数据,请按照下列步骤操作:
- 双击单元格。
- 键入新值。
- 按 Enter 键。
如果您的应用使用 Room,并且您的界面正在观察数据库(例如使用 LiveData 或 Flow),则您对数据所做的任何更改都会立即在运行的应用中显示出来。否则,只有在应用下一次从数据库读取修改后的数据时,更改才会可见。
查看实时数据库更改
如果您希望 Database Inspector 在您与运行中的应用进行交互时自动更新其呈现的数据,请选中检查器窗口顶部的 Live updates 复选框。启用实时更新后,检查器窗口中的表将变为只读状态,您无法修改其值。
或者,要手动更新数据,请单击检查器窗口顶部的 Refresh table 按钮。
查询数据库
Database Inspector 可以在应用运行时对应用的数据库运行查询。如果您的应用使用 Room,该工具可以使用 DAO 查询,但也支持自定义 SQL 查询。
运行 DAO 查询
如果您的应用使用 Room,Android Studio 会提供装订线操作,让您可以快速运行已经在 DAO 类中定义的查询方法。当您的应用正在运行且 IDE 中打开了 Database Inspector 时,可以使用这些操作。
要运行 DAO 中的任何查询方法,请单击其 @Query 注解旁边的 Run SQLite statement in Database Inspector
按钮。
如果您的应用包含多个数据库,Android Studio 会提示您从列表中选择要查询的数据库。如果您的查询方法包含命名的绑定参数,Android Studio 会在运行查询之前请求每个参数的值。查询结果会显示在检查器窗口中。
运行自定义 SQL 查询
您还可以使用 Database Inspector 在应用运行时对应用的数据库运行自定义 SQL 查询。
要查询数据库,请按照下列步骤操作:
单击 Databases 窗格顶部的 Open New Query tab
,以在检查器窗口中打开一个新选项卡。
图 3. 打开 New Query 选项卡。 如果您的应用包含多个数据库,请从 New Query 选项卡上的列表中选择要查询的数据库。
在 New Query 选项卡顶部,将您的自定义 SQL 查询键入文本字段。
单击 Run。
或者,使用查询历史记录功能运行以前使用过的查询:
单击 Show query history
按钮,查看您之前针对所选数据库运行的查询列表。
图 4. 查询历史记录菜单。 单击列表中的查询以在编辑器中预览完整查询,然后按 Enter 键将其复制到编辑器中。
单击 Run 执行该语句。
显示在 New Query 选项卡中的查询结果是只读的,无法修改。但是,您可以使用自定义 SQL 查询字段来运行修改语句,例如 UPDATE、INSERT 或 DELETE。
如果您的应用使用 Room,并且您的界面正在观察数据库(例如使用 LiveData 或 Flow),则您对数据所做的任何更改都会立即在运行的应用中显示出来。否则,只有在应用下一次从数据库读取修改后的数据时,更改才会可见。
离线模式
在 Android Studio 4.2 及更高版本中,即使进程断开连接,您也可以继续检查应用的数据库。这使得在崩溃后调试应用变得更加容易。
当发生断开连接时,Database Inspector 会下载您的数据库,并使其在离线模式下可用。离线时,您仍然可以打开表并运行查询。
当您重新连接到实时应用进程时,Database Inspector 会退出离线模式,并仅向您显示设备上的数据。换句话说,离线模式下显示的数据在您重新连接到应用进程时不会保留。由于此限制,Database Inspector 不允许您在离线模式下编辑数据或运行修改 SQL 语句。
当您在离线模式下查看数据库时,进程名称包含 [DETACHED],表示检查器不再连接到该进程。此外,数据库图标
表示离线状态,如图 5 所示。
保持数据库连接打开
只有当您的应用保持与数据库的实时连接时,Database Inspector 才能修改该数据库。这意味着如果您的应用频繁连接和断开数据库,调试这些数据库可能会很困难。Databases 窗格使用图标来标识打开
和关闭
的数据库。
此外,为防止数据库连接关闭,请在 Databases 窗格顶部将 Keep database connections open 从关闭
切换为开启
。
从数据库检查器导出数据
您可以从 Database Inspector 导出数据库、表和查询结果以进行保存、共享或在本地重新创建。当您在 Android Studio 中打开应用项目并在 Database Inspector 中检查该项目的应用时,可以通过以下方式之一开始导出数据:
- 在 Databases (数据库) 面板中选择数据库或表,然后点击面板顶部的 Export to file (导出到文件)。
- 右键单击 Databases 面板中的数据库或表,然后从上下文菜单中选择 Export to file。
- 在标签页中检查表或查询结果时,点击表或查询结果上方的 Export to file (导出到文件)。
选择导出操作后,使用 Export Database 对话框来完成最后步骤,如图 6 所示。
根据您是尝试导出数据库、表还是查询结果,您可以选择以以下一种或多种格式导出数据:DB、SQL 或 CSV。
其他资源
要了解有关 Database Inspector 的更多信息,请参阅以下附加资源: