当前位置:首页 > 行业动态 > 正文

安卓开发中如何查看数据库

在Android Studio使用Database Inspector工具,或通过ADB命令 adb shell进入设备查看 /data/data/包名/databases目录下的SQLite数据库

使用 Android Studio 的 Database Inspector 工具

Android Studio 4.1 及以上版本提供了 Database Inspector 工具,可实时查看和操作应用的数据库。

使用步骤:

  1. 启用 Inspector

    • build.gradle 中添加依赖:
      android {
          ...
          defaultConfig {
              javaCompileOptions {
                 annotationProcessorOptions {
                     arguments = [ "room.schemaLocation": "$projectDir/schemas".toString() ]
                 }
              }
          }
      }
    • 如果使用 Room,需在 @Database 注解中添加 exportSchema = false
  2. 启动应用并打开 Inspector

    • 运行应用后,在 Android Studio 底部工具栏点击 Database Inspector 图标。
    • 选择要调试的进程,即可看到数据库列表。
  3. 查看和操作数据

    • 双击表名可查看数据。
    • 支持增删改查操作,数据会自动同步到界面。

通过 ADB 命令导出数据库文件

如果没有 Database Inspector,可以通过 ADB 将数据库文件导出到本地查看。

安卓开发中如何查看数据库

操作步骤:

  1. 获取数据库路径

    • 默认路径为 /data/data/<包名>/databases//data/data/com.example.app/databases/mydb.db
  2. 使用 ADB 导出数据库

    adb shell "run-as com.example.app cp /data/data/com.example.app/databases/mydb.db /sdcard/"
    adb pull /sdcard/mydb.db ./
  3. 用 SQLite 工具打开

    使用 DB Browser for SQLite(https://sqlitebrowser.org/)或命令行工具查看数据。

    安卓开发中如何查看数据库


使用第三方工具连接设备

工具如 SQLite BrowserDBeaver 可通过 USB 连接真机或模拟器。

操作步骤:

  1. 连接设备

    • 真机需开启 USB 调试,模拟器可直接连接。
    • 工具会自动识别设备上的数据库文件。
  2. 打开数据库

    • 输入数据库路径(如 /data/data/com.example.app/databases/mydb.db)。
    • 如果设备未 root,可能需要通过 adb 将数据库文件复制到可访问路径。

通过代码查询并打印日志

在代码中直接查询数据库并输出日志,适合快速调试。

安卓开发中如何查看数据库

示例代码:

// 查询所有数据并打印到日志
Cursor cursor = db.query("table_name", null, null, null, null, null, null);
while (cursor.moveToNext()) {
    Log.d("Database", "ID: " + cursor.getInt(0) + ", Name: " + cursor.getString(1));
}
cursor.close();

注意事项

问题 解决方案
数据库文件找不到 检查包名、数据库名称是否正确,或尝试用 adb 列出文件:adb shell ls /data/data/<包名>/databases/
权限不足 真机需 root 权限,或通过 adbrun-as 命令绕过权限限制
数据未更新 确保在代码中调用了 SQLiteDatabase.execSQL("VACUUM;") 或手动关闭应用以刷新数据

相关问题与解答

问题 1:如何删除应用的数据库?

解答

  • 通过 ADB 删除数据库文件:
    adb shell "rm /data/data/com.example.app/databases/mydb.db"
  • 或在代码中调用 deleteDatabase("mydb.db")

问题 2:如何在真机上查看加密的数据库?

解答

  • 如果使用 Room 加密数据库(如 RoomDatabase.BuilderfallbackToDestructiveMigration),需先解密:
    SupportSQLiteDatabase db = RoomDatabase.createDatabase(context, "mydb.db");
    // 通过反射或工具类读取解密后的数据
  • 或通过 adb 导出加密后的数据库文件,配合密钥工具解密