我有代码转储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);
当我在我的模拟器上运行时,我很好,但是当我在真正的手机上运行它时它不起作用。我很好奇我是否需要在清单中添加额外的权限,或者我缺少的内容。
EDT
所以看起来我的问题的一部分是PEBKAC ......我通过adb手动运行转储,然后在模拟器中读取文件工作正常。所以dump命令看起来不像是模拟器的工作......我需要为sqlite3程序做一个意图吗?如果是这样,我该如何为特定程序执行此操作?
答案 0 :(得分:0)
看起来SQLite3
是一个可以从adb
运行的命令,但它不一定在手机上。基于此,我采取了不同的方法。我使用android的DatabaseUtils来帮助我构建我需要的结果,例如DatabaseUtils.dumpCursorToString(cursor)
。我为我感兴趣的每个表做了这个并构建了一个返回字符串。