如何从Android设备中提取sqlite数据库?

时间:2012-07-22 06:19:02

标签: android sqlite

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

10 个答案:

答案 0 :(得分:50)

您可以使用这些命令从设备中提取数据库。通过android studio键入这些命令非常简单。请确保您已将adb的路径全局设置为您的系统。然后打开"终端"窗口从底部到android工作室,靠近" Android Monitor"。现在,您只需使用应用程序的实际程序包名称和数据库文件名更新以下命令。您将从设备中获取文件。

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"

Android 5.0+ /data/data/package.name/databases/file的命令将是:

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"

答案 1 :(得分:7)

  • 将您的设备连接到电脑
  • /sdk-directory/tools
  • 中打开命令提示符
  • 输入adb pull /data/data/com.example.app/databases/database.db

其中com.example.app是您的应用程序包名称,database.db是数据库文件

如果您的设备已植根,如果没有尝试关注

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

答案 2 :(得分:4)

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

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

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

它给了我很多帮助。希望它也可以帮到你。

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

答案 3 :(得分:4)

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

  1. 从左侧列表中选择您的设备。
  2. 选择FileExplorer选项卡
  3. 展开数据 - >数据 - > “yourpackageName” - >数据库
  4. 选择您的databaseFile,然后在右上角单击此图标 save icon 从文件中提取文件。
  5. 将其保存在桌面上,然后使用此工具将其打开: http://sqlitebrowser.org/

答案 4 :(得分:3)

adb root
adb remount
adb pull <remote>  <local>

答案 5 :(得分:2)

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

  1. 将文件从应用包保存到设备sdcard
  2. adb -d shell "run-as com.dautechnology.abdimuna.smartparking cat /data/data/<myAppPackageName>/databases/<databaseFileName> > /sdcard/<databaseFileName>"

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

    退出adb shell
    1. 将文件从SD卡拉到当前的工作位置。
    2. adb pull sdcard/<databaseFileName>

      1. 将文件移至桌面或您想要的位置。
      2. mv <databseFileName> ~/Desktop

        我希望这可以帮助那些人。

答案 6 :(得分:2)

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

在你的PC shell中运行:

adb -d shell 'run-as <package_name> cat /data/data/<package_name>/databases/<db_name>' > <local_file_name>

答案 7 :(得分:2)

从版本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

就足够了

答案 8 :(得分:1)

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

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

答案 9 :(得分:1)

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

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"/>