1

我有代码转储sqlite3数据库然后将其读入字符串:

    String dbPath = "/data/data/com.company.project/databases/project.db";
    String outputPath = "/data/data/com.company.project/databaseDump.txt";

    Process proc = Runtime.getRuntime().exec("sqlite3 " + dbPath + " '.dump' > " + outputPath);
    proc.waitFor();
    returnString = FileUtil.getStringFromFile(outputPath);

当我在我的模拟器上运行它时我很好,但是当我在真手机上运行它时它不起作用。我很好奇是否需要在清单中添加其他权限,或者我缺少什么。

美东时间

所以看来我的问题的一部分是PEBKAC ...我通过adb手动运行转储,然后在模拟器中读取文件工作正常。所以转储命令看起来也不像是在模拟器上工作的......我需要为 sqlite3 程序做一个意图吗?如果是这样,我该如何为特定程序执行此操作?

4

1 回答 1

0

看起来SQLite3是您可以从 运行的命令adb,但不一定在手机上。基于此,我采取了不同的方法。我使用 android 的 DatabaseUtils 来帮助我构建我需要的结果,例如DatabaseUtils.dumpCursorToString(cursor). 我对我感兴趣的每个表都这样做了,并构建了一个返回字符串。

于 2013-10-22T15:10:00.977 回答