Android sqlite-回滚到快照

Android sqlite-回滚到快照,android,ios,sqlite,Android,Ios,Sqlite,我正在为android和ios开发一个应用程序。我希望能够快照一个sqlite数据库,并在多次提交后有可能回滚到该快照。一次只需要一个快照 数据必须在应用程序重新启动时保持,因此保存点不是一个选项(它只存在于一个连接中) 在android和ios上使用sqlite是否可以实现这一点?如果没有,是否有数据库解决方案具有此功能?您必须设置事务,如果事务成功,您必须提交该事务,否则您必须取消该事务 下面是示例代码 启动事务 完成对数据库的操作后,可以使用 但如果您在交易之间给出错误 然后不要设置dat

我正在为
android
ios
开发一个应用程序。我希望能够快照一个
sqlite
数据库,并在多次提交后有可能回滚到该快照。一次只需要一个快照

数据必须在应用程序重新启动时保持,因此
保存点
不是一个选项(它只存在于一个连接中)


在android和ios上使用sqlite是否可以实现这一点?如果没有,是否有数据库解决方案具有此功能?

您必须设置事务,如果事务成功,您必须提交该事务,否则您必须取消该事务

下面是示例代码

启动事务

完成对数据库的操作后,可以使用

但如果您在交易之间给出错误

然后不要设置
database.setTransactionSuccessful()以便事务将回滚。

这是简单的步骤。

鉴于您在原始帖子中说“在如此多的提交之后,”,我恐怕您一定是指SQLite(如每一个-其他SQL数据库…)最不幸的不直接支持的概念。您需要在自己的应用程序中实现“特定于应用程序的东西”

不幸的是,“您必须从这里开始。”SQL理解通过“提交”或“回滚”结束的“原子事务”,但它只理解这一点


为了实现您的目标,您必须深入IBM曾经称为“检查点/重新启动”的(特定于应用程序的)领域。但最不幸的是,这些领域完全是“特定于应用程序的!”

SQLite没有用于恢复已提交事务的内置机制

理论上,您可以使用创建数据库文件的副本,但实际上,Android框架不允许您访问该文件。 如果可以确保没有人访问数据库,则可以手动复制DB文件

如果更改的数量与整个数据库的大小相比很小,那么最好记录所有更改,并在需要时手动恢复这些更改。
这最好使用触发器来完成;请参阅。

使用Android SQLite事务回滚功能
database.beginTransaction(); /* for start transaction */
database.setTransactionSuccessful();    
database.endTransaction();