博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FMDB数据库升级——增加表字段
阅读量:2396 次
发布时间:2019-05-10

本文共 1718 字,大约阅读时间需要 5 分钟。

转载自:  https://www.jianshu.com/p/124a2e4e8c42

前言

升级数据库是个很繁琐看似很麻烦的事情,有次面试,面试官问了关于增加字段更新数据库升级的问题,我是这么回答的,我说可以做一个数据库迁移拷贝

,每次更新版本判断一下,面试官表示很不解,为什么要这么复杂化,重复问了好几次,也许在等我更好的答案;

需要在已经存在的表里面新增一个或者多个字段,思路应该是这样的;

先去判断增加的字段是否存在,不存在就去插入:

1
#import "FMDatabaseAdditions.h" // 导入头文件// 判断if (![db columnExists:@"需要增加的字段" inTableWithName:@"表名"]){            }
2

如果不存在,就执行插入操作:

NSString *alertStr = [NSString stringWithFormat:@"ALTER TABLE %@ ADD %@ INTEGER",@"表名",@"新增字段"];  BOOL worked = [db executeUpdate:alertStr];  if(worked){    NSLog(@"插入成功");}else{    NSLog(@"插入失败");}
3

升级顺序如下:

// 获得Documents目录路径    NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];    // 文件路径    NSString *sqlitePath = [NSString stringWithFormat:@"MLChatDataBase%@.sqlite", [MLSettingTool objectForKey:ML_UserId]];    NSString *filePath = [documentsPath stringByAppendingPathComponent:sqlitePath];// 实例化FMDataBase对象    _db = [FMDatabase databaseWithPath:filePath];    [_db open];    // 初始化数据表    NSString *userInfoSql = @"CREATE TABLE IF NOT EXISTS UserInfoData (userId VARCHAR(255) PRIMARY KEY NOT NULL, realName VARCHAR(255),headImg VARCHAR(255),mobile VARCHAR(255))";    [_db executeUpdate:userInfoSql];// 判断是否包含表字段      if (![db columnExists:@"age" inTableWithName:@"UserInfoData"]){            NSString *alertStr = [NSString stringWithFormat:@"ALTER TABLE %@ ADD %@ INTEGER",@"UserInfoData",@"age"];            BOOL worked = [db executeUpdate:alertStr];            if(worked){                 NSLog(@"插入成功");          }else{                  NSLog(@"插入失败");          }          }      [_db close];
作者:玛丽_
链接:https://www.jianshu.com/p/124a2e4e8c42
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
你可能感兴趣的文章
python基础之元组、文件操作、编码、函数、变量
查看>>
两个路径下的iptables的区别
查看>>
wsgi.py的详解
查看>>
python中setting.py详解
查看>>
python的__init__.py
查看>>
最新pycharm破解(亲试有效)
查看>>
python中的变量怎样开辟内存
查看>>
tomcat端口号直接跳转到项目首页
查看>>
maven入门
查看>>
maven管理java项目
查看>>
spring安装 使用 教程
查看>>
u盘破解WiFi密码
查看>>
Linux同步时间
查看>>
JMX应用实例
查看>>
JConsole的使用
查看>>
javax.management.NotCompliantMBeanException: MBean class com.jmx.JmxMbeanRea does not implement
查看>>
jmx之Notification
查看>>
jmx之Model MBean的
查看>>
jmx之Apache Commons Modeler
查看>>
安装zookeeper
查看>>