我正在为android
和ios
开发一个应用程序。我希望能够对sqlite
数据库进行快照,并且可以在多次提交后回滚到该快照。任何时候都只需要一个快照。
数据必须在应用重新启动时保留,因此SAVEPOINT
不是一个选项(它只存在于一个连接中)
这可能与Android和ios上的sqlite一起使用吗?如果没有,是否有一个具有此功能的数据库解决方案?
答案 0 :(得分:1)
鉴于你在原帖中说了很多提交“之后的”,我担心你必须提到SQLite 的概念(比如每个 - 其他SQL数据库......)最不幸的是不直接支持。您将需要在自己的应用程序中实现“某些特定于应用程序”。
而且,不幸的是,“你必须从这里接受它。” SQL理解通过“提交”或“回滚”结束的“原子事务”,但它不会理解更多。
为了实现您的目标,您必须深入研究IBM曾称之为“检查点/重启”的(特定于应用程序的)领域。但是,最不幸的是,这些完全“特定于应用程序!”
答案 1 :(得分:1)
SQLite没有内置机制来还原已提交的事务。
理论上,您可以使用backup API制作数据库文件的副本,但在实践中,Android框架不允许您访问此文件。 如果您可以确保没有人访问数据库,您可以手动复制数据库文件。
如果更改量与整个数据库的大小相比较小,则最好记录所有更改,并在需要时手动还原它们。 这最好使用触发器完成;见Automatic Undo/Redo Using SQLite。
答案 2 :(得分:-1)
您必须设置交易,如果成功则必须提交该交易,否则您必须取消该交易。
下面是示例代码
启动交易
database.beginTransaction(); /* for start transaction */
完成对数据库的操作后,您可以使用
database.setTransactionSuccessful();
database.endTransaction();
但是如果你在交易之间给出错误
然后不要设置database.setTransactionSuccessful();
以便事务回滚。
这是简单的步骤。 http://www.sqlite.org/lockingv3.html