21

如何从模拟器等android设备中提取sqlite数据库?

4

10 回答 10

56

You can use these commands for pulling the data base from your device. Typing these commands through android studio is very easy. Please make sure you have set the path of adb globally to your system. Then open the "terminal" window from bottom to android studio and near to "Android Monitor". Now you just update the following commands with actual package name of your app and database file name. You will get your file out from the device.

adb shell "run-as package.name chmod 666 /data/data/package.name/databases/file"
adb pull /data/data/package.name/databases/file .
adb shell "run-as package.name chmod 600 /data/data/package.name/databases/file"

the command for Android 5.0+ /data/data/package.name/databases/file would be:

adb shell "run-as package.name chmod 666 /data/data/package.name/databases/file"
adb exec-out run-as package.name cat databases/file > newOutFileName
adb shell "run-as package.name chmod 600 /data/data/package.name/databases/file"
于 2014-08-29T10:33:13.987 回答
9

您可以使用 Android Device Monitor 来拉取它。转到工具 -> Android -> Android 设备监视器

  1. 从左侧列表中选择您的设备。
  2. 选择 FileExplorer 选项卡
  3. 展开数据-> 数据-> "yourpackageName" -> 数据库
  4. 选择您的数据库文件并在右上角单击此图标 保存图标 从设备中提取文件。
  5. 将其保存在您的办公桌上,然后使用此工具打开它: http ://sqlitebrowser.org/
于 2017-11-22T15:07:43.343 回答
6
  • 将您的设备连接到电脑
  • 在中打开命令提示符/sdk-directory/tools
  • 类型adb pull /data/data/com.example.app/databases/database.db

com.example.app您的应用程序包名称和database.db数据库文件在哪里

那是在您的设备已植根的情况下,如果没有,请尝试关注

https://stackoverflow.com/a/8433520/1300995

于 2012-07-22T06:38:15.427 回答
6

从版本 24 开始,我使用这些命令来提取数据库

adb shell
run-as package.name
cat /databases/database.db > /sdcard/database.db
exit
exit
adb pull /sdcard/database.db

在版本 24 之前

adb pull /data/data/package name/databases/database.db

就足够了

于 2018-02-16T12:39:02.757 回答
5

查看和管理您的 android 应用程序数据库的最佳方法是使用此库https://github.com/sanathp/DatabaseManager_For_Android

它是一个单一的 java 活动文件,只需将 java 文件添加到您的源文件夹中,您就可以查看应用程序数据库中的表、更新、删除、向表中插入行。应用程序中的所有内容。

开发完成后,从您的 src 文件夹中删除 java 文件。

它帮助了我很多。希望它也能帮助你。

您可以在此处查看 1 分钟演示:http: //youtu.be/P5vpaGoBlBY

于 2014-10-02T19:39:38.550 回答
5

您可以使用一个命令跳过所有这些中间阶段。

在您的 PC 外壳中运行:

adb -d shell 'run-as <package_name> cat /data/data/<package_name>/databases/<db_name>' > <local_file_name>
于 2017-11-08T21:31:37.220 回答
3

我知道这是一个老问题,但是这是我从设备上的应用程序中提取 SQLite 数据库文件的方法。

  1. 将文件从应用程序包保存到设备 sdcard

adb -d shell "run-as com.dautechnology.abdimuna.smartparking cat /data/data/<myAppPackageName>/databases/<databaseFileName> > /sdcard/<databaseFileName>"

上面的命令会将文件存储到 /sdcard 您可以通过输入验证文件 adb shell ls sdcard/ 然后退出 adb shellexit

  1. 将文件从 sdcard 拉到您当前的工作位置。

adb pull sdcard/<databaseFileName>

  1. 将文件移动到桌面或您想要的位置。

mv <databseFileName> ~/Desktop

我希望这可以帮助那里的人。

于 2017-06-29T09:28:48.497 回答
3
adb root
adb remount
adb pull <remote>  <local>
于 2016-06-28T06:02:56.853 回答
2

在应用程序中以编程方式执行

try {
    File file = Environment.getExternalStorageDirectory();
    File data = Environment.getDataDirectory();

    if (file.canWrite()) {
        String currentPath = "/data/data/" + getPackageName() + "/databases/yourdbname";
        String copyPath = "copydb_name.db";
        File currentDB = new File(currentPath);
        File backupDB = new File(file, copyPath);

        if (currentDB.exists()) {
            FileChannel src = new FileInputStream(currentDB).getChannel();
            FileChannel dst = new FileOutputStream(backupDB).getChannel();
            dst.transferFrom(src, 0, src.size());
            src.close();
            dst.close();
        }
    }
} catch (Exception e) {

}

确保获得许可

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
于 2017-08-22T11:49:28.747 回答
1

如果您使用 Eclipse,请转到 DDMS 视图。从文件资源管理器选项卡->数据->数据->应用程序包名称->数据库->数据库名称

选择数据库数据库文件,然后单击拉按钮

于 2012-07-22T07:25:05.917 回答