app数据库版本迁移(sqlite表结构变更)

这篇文章介绍一个通用的app数据库版本迁移处理,偷懒采用的FMDB封装的数据库,但是操作过程的逻辑是相同的。

先介绍一下使用场景:app内嵌有本地数据库,在app版本迭代过程中由需求导致的数据库表结构变动,这里仅介绍表字段的删除和新增(sqlite不支持删除或则修改表字段)

新增字段是原本就支持的功能,语句就是“ ALTER TABLE *** add *** ;” 如下图:

新增表字段

删除字段就比较麻烦了,毕竟sqlite不支持直接用ALTER语句处理,不像其它的数据库,虽然如此,但还是有办法解决的,简单点的操作就是把原来的表备份一下,然后删除,再把原来的建表语句改一改执行一下,最后把备份数据还原回去,这边做的主要是这个建表语句的自动化处理。首先先采用sql语句获取表的CREATR sql代码,然后对CREATR sql进行解析转换成新的CREATR sql,剩下的都一样了,具体如下图:

删除表字段

ps:数据库操作时候需要避免同时读写(数据库锁)和线程死锁。

至于修改表字段的可以参照删除表字段思路进行处理,这里就不另行介绍了。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 11,031评论 0 9
  • 转 # https://www.cnblogs.com/easypass/archive/2010/12/ 08/...
    吕品㗊阅读 13,342评论 0 44
  • 什么是SQLite?数据库存储数据的步骤 ●SQLite是一款轻型的嵌入式数据库,它占用资源非常的低,在嵌入式设备...
    飞行的猫阅读 7,294评论 1 7
  • 1、引言 数据库设计过程中表、字段等的命名规范也算是设计规范的一部分,不过设计规范更多的是为了确保数据库设计的合理...
    SnowflakeCloud阅读 41,213评论 0 48
  • 亲爱的马先生: 过年了。 不知道你最近好不好,很久没有给你写信,很想你。 天边有一朵很漂亮的云,我想那大概是你在那...
    箫十七阅读 3,188评论 0 0

友情链接更多精彩内容