【问题标题】:sqlite replacing table iOS and Androidsqlite 替换表 iOS 和 Android
【发布时间】:2020-04-01 19:21:45
【问题描述】:

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

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

我以为很多人都会这样做,但有趣的是,我尝试寻找答案但没有得到任何结果。

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

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

【问题讨论】:

    标签: android ios sqlite


    【解决方案1】:

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

    是的。

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

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

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

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

    • 1234563数据库)。这不是唯一的解决方案

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

    【讨论】:

    • 感谢真的很有用。这主要是我努力寻找答案的 SQLite 方面。似乎没有直接的“替换表”选项,但可以使用 alter table 解决。再次感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    • 2017-08-04
    • 1970-01-01
    • 2017-10-21
    • 2013-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多