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

安卓开发创建的数据库在哪

安卓开发中数据库的存储位置与访问方法

默认存储路径

安卓应用创建的数据库(通常为SQLite数据库)默认存储在应用安装目录下的 /databases/ 文件夹中,具体路径格式如下:

设备类型 路径示例 说明
物理设备/模拟器 /data/data/<包名>/databases/<数据库名>.db 需Root权限或ADB访问
Android模拟器 /mnt/sdcard/Android/data/<包名>/databases/ 部分模拟器支持直接导出

访问数据库的常见方式

  1. 通过Android Studio查看

    安卓开发创建的数据库在哪

    • 使用 Device File Explorer 面板,展开 data → data → <包名> → databases 目录。
    • 需开启开发者选项中的 “调试数据库” 功能(仅限根设备或模拟器)。
  2. 通过ADB命令导出

    adb shell "run-as <包名> cp /data/data/<包名>/databases/<数据库名>.db /sdcard/"
    adb pull /sdcard/<数据库名>.db ./
  3. 直接查询数据库
    在ADB shell中使用SQLite工具:

    安卓开发创建的数据库在哪

    adb shell
    run-as <包名> sqlite3 /data/data/<包名>/databases/<数据库名>.db

自定义存储路径

若需将数据库存储在应用私有目录外(如SD卡),需在创建时指定路径:

// 自定义路径示例(需申请WRITE_EXTERNAL_STORAGE权限)
String dbPath = getExternalFilesDir(null) + "/mydatabase.db";
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(new File(dbPath), null);
存储位置 优点 缺点
默认路径(/databases) 自动管理,无需权限 仅应用自身可访问
外部存储(如SD卡) 可跨设备共享 需动态申请权限,Android 11+受限

多数据库管理

  • 同一应用可创建多个数据库,文件名通过SQLiteOpenHelper构造函数指定。
  • 删除数据库需手动删除文件:
    File dbFile = new File("/data/data/" + getPackageName() + "/databases/mydb.db");
    dbFile.delete();

相关问题与解答

问题1:如何备份应用数据库?

解答

安卓开发创建的数据库在哪

  1. 通过ADB导出数据库文件:
    adb pull /data/data/<包名>/databases/<数据库名>.db backup/
  2. 编程实现备份(需存储权限):
    // 将数据库复制到外部存储
    File source = new File("/data/data/" + getPackageName() + "/databases/mydb.db");
    File dest = new File(getExternalFilesDir(null), "mydb_backup.db");
    try (InputStream in = new FileInputStream(source);
         OutputStream out = new FileOutputStream(dest)) {
        ByteStreams.copy(in, out);
    }

问题2:Android 11+如何访问应用数据库?

解答

  • 方法1:通过adb shell配合run-as命令(需设备已授权):
    adb shell run-as com.example.myapp cat /data/data/com.example.myapp/databases/mydb.db > mydb.sql
  • 方法2:使用BackupAgentFileObserver监听数据库变化,通过备份API获取数据(需用户授权