无法从设备查看或提取SQLite数据库

时间:2014-09-24 11:08:32

标签: android eclipse adb adt

我无法在我的设备上查看或拉取我的应用程序创建的SQLite数据库文件。

以下是我尝试使用ADB拉取它的方法

E:\>adb pull /data/data/com.example.testinglist/databases/timetracker.db failed to copy '/data/data/com.example.testinglist/databases/timetracker.db' to './timetracker.db': **Permission denied**

如您所见,存在权限被拒绝错误。

我无法在Eclipse ADT中使用FileExplorer查看或复制文件。只能将文件夹数据复制为无法在FileExplorer中的文件夹中移动。和文件夹使用FileExplorer复制到计算机的数据为空。请问任何解决方案?enter image description here

2 个答案:

答案 0 :(得分:0)

如果您的设备没有根,您可以使用此代码将您的应用数据库导出到您的SD卡上:

try {
   File dstDb = new File(dstPathOnSdcard, dstFileName);
   FileOutputStream output = new FileOutputStream(dstDb);

   File srcDb = new File(Environment.getDataDirectory(), "//data//com.mynamespace.myapp//databases//mydatabasename.db");
   FileInputStream input = new FileInputStream(srcDb);

   FileChannel src = input.getChannel();
   WritableByteChannel dst = Channels.newChannel(output);

   src.transferTo(0, src.size(), dst);

   src.close();
   input.close();
   dst.close();
   output.close();
} 
catch (Exception e) {
   // doSomething
}

答案 1 :(得分:0)

我就是这样做的(在没有root的ubuntu机器上):

  1. 在Android / Sdk / platform-tools /
  2. 中找到adb文件
  3. 在此目录中打开命令行
  4. 运行以下代码,将Sqlite数据库从app拉到SD卡:

    ./ adb -d shell" run-as com.example.name.myappname cp /data/data/com.example.name.myappname/databases/database.db / sdcard / database。分贝"

  5. *确保替换" database.db"和" com.example.name.myappname",通过您的数据库名称和应用名称(在清单中找到)。

    1. 运行以下代码,将Sqlite数据从SD卡拉到桌面:

      ./ adb -d pull /sdcard/database.db~ / Desktop / database.db