我将本教程(http://www.screaming-penguin.com/node/7749)改编为我构建的Android应用程序,允许按下按钮将当前数据库导出到用户的SD卡。它完美无缺。
但我担心我的应用程序的用户不熟悉db文件,我正在寻找一种方法将其转换为更加用户友好的格式。我遇到了这个帖子(http://groups.google.com/group/android-beginners/browse_thread/thread/4e53ebca14daecfc),它建议“从数据库中查询数据并将数据写入csv文件。”
我希望有人能指出我正确的方向,开始弄清楚如何做到这一点。我发现很难找到有关具体方法的更多信息。
或者只是简单地解释如何阅读和访问.db文件更有意义吗?
由于
编辑:我也有一个关于sqlite导出过程的问题,我想我只是在这里问,而不是创建一个新问题。有没有办法修改下面的代码,以便每个导出将接收日期的字符串表示或只附加一个数字?现在,如果您再次导出,它会自动覆盖旧文件。感谢。protected Boolean doInBackground(final String... args) {
File dbFile = new File(Environment.getDataDirectory() +
"/data/com.example.example/databases/data");
File exportDir = new File(Environment.getExternalStorageDirectory(), "exampledata");
if (exportDir.exists()) {
exportDir.mkdirs();
}
File file = new File(exportDir, dbFile.getName());
try {
file.createNewFile();
this.copyFile(dbFile, file);
return true;
} catch(IOException e) {
Log.e(MyApplication.APP_NAME, e.getMessage(), e);
return false;
}
}
答案 0 :(得分:2)
我希望有人能指出我正确的方向,开始弄清楚如何做到这一点。
要读入数据,请使用rawQuery()
。
要编写数据,请使用Java I/O。 Java上还有open source CSV libraries可以在Android上运行。
有没有办法修改下面的代码,以便每个导出都会收到日期的字符串表示或只附加一个数字?
使用字符串连接将您想要的任何内容添加到文件名中。
另外,请摆脱:
File dbFile = new File(Environment.getDataDirectory() +
"/data/com.example.example/databases/data");
并将其替换为:
File dbFile=getDatabasePath("data");