sqlite db干净地从ios应用程序导出

时间:2012-12-05 23:00:23

标签: ios ios5 sqlite ios6

我需要一个针对我公司正在构建的应用中的功能的解决方案。它是适用于iPhone和iPad的IOS应用程序,我们仅支持ios5及更高版本。

我们需要的最终结果是用户点击设置区域内的一个按钮,该按钮会转储应用程序内部数据库干净地,将其附加到用户的电子邮件中,然后发送给任何他们想要的人

附加到电子邮件不是问题。我担心的是,如果认为将sqlite数据库的副本作为附件导出到电子邮件会使用户留下可用的数据库副本是合理的。我的客户群并不擅长备份,但数据对他们来说非常重要。

sqlite数据库的热导出是否可用,即是否支持,或者数据库有时/总是会损坏?

请记住,所有这些功能都必须使数据库的可用副本脱离设备并安全地脱机存储,以便我可以通过将数据库复制回设备来恢复数据库。使用iExplorer或PhoneView。

未来我们计划添加强大的导出和导入功能,但目前我们正在寻找一种可在一天或更短时间内实施的解决方案。

提前感谢anybodys输入和 gasp 一些Objective-c代码,这些代码将转储sqlite数据库的干净副本,使数据库可以使用而不会损坏。

1 个答案:

答案 0 :(得分:0)

您无需制作数据库的热拷贝。当用户选择应用程序的备份功能时,请关闭数据库,复制该文件,然后重新打开该数据库。您现在可以将复制的文件附加到电子邮件中。

我的应用中有一个功能就是这样做。我从来没有遇到过腐败的数据库文件的问题。只要没有活动的事务正在运行,sqlite文件应该可以复制,特别是如果没有打开的句柄。

另一种选择是使用sqlite3_backup_init和相关函数来复制数据库。