首页 > 解决方案 > sqlite 替换表 iOS 和 Android

问题描述

我目前在 iOS 和 Android 的应用程序中都使用 sqlite 数据库。我目前不希望为这个应用程序使用 CoreData 或 JSON,因为它与 sqlite 数据库完美配合。

但是,我想在下次更新时更新数据库中的一个表。

我认为这将是许多人会做的事情,但有趣的是,我尝试寻找答案但没有得到任何结果。

所以我的问题有两个:1)是否可以替换sqlite数据库中的表?2)如果是这样,一个人如何做到这一点?

我没有代码可以分享,因为我什至无法确定如何开始。提前致谢

标签: androidiossqlite

解决方案


1) 是否可以替换 sqlite 数据库中的表?

是的。

2)如果是这样,一个人如何做到这一点?

您利用一种检测是否需要更改(升级)的方法。

  • 在 Android 上,如果使用SQLiteOpenHelper的子类,则增加版本号(超级调用的第 4 个参数),在这种情况下,onUpgrade方法运行,因此您覆盖onUpgrade方法来处理对表的更新。

  • 这利用了存储在数据库标头中的user_version字段。简而言之,SQliteOpenHelper 在打开数据库时会将标头中的值与作为第四个参数传递的值进行比较。如果传递的值大于标头值,则调用 onUpgrade。如果值相同,则不会进行此类调用。如果传递的值低于标头中的值,则调用 onDownGrade,除非编码导致异常。(通常不使用 onDowngrade)

  • 在 IOS 上,您可以复制这种比较存储在 user_version 中的值的方法,该值通过PRAGMA user_version =PRAGMA user_version提取和设置?在适用时(即未存储在数据库中)的值相对于指示较新版本的值。这不是唯一的解决方案

上面的链接有一个简短的描述,其中包括一个与 SQLite 的ALTER TABLE相关的链接,它本身解释了ALTER TABLE命令的局限性,并有一个部分涵盖了替代解决方案。这将适用于 IOS 和 Android。


推荐阅读