从代码中导出Android SQLite数据库用于错误报告

3
我正在为我的一个Android程序开发诊断工具。
基本上,如果用户遇到问题,我想做像SQLite的dump(参考:http://www.sqlite.org/sqlite.html)一样的事情,把它转化为字符串,然后通过电子邮件发送。
请问有没有简单的方法可以在Android程序内部完成这个任务,还是必须要与Android操作系统交互并以此运行命令呢?
1个回答

3

我通过将数据库转储到文件中,然后将文件读入字符串来解决了自己的问题。对于那些感兴趣的人,以下是一般思路:

    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

上面的问题我没有发现,因为我是从adb中运行SQLite3命令。

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


你是否实现了自己的“dump”函数,以便可以导出SQL命令?因为DatabaseUtils的转储不是SQL输出。 - NickPro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接