美文网首页数据库
FMDB数据库升级——增加表字段

FMDB数据库升级——增加表字段

作者: MMD_ | 来源:发表于2017-11-30 11:07 被阅读1179次
    609A875E-A58B-4FFF-9E6E-32ED5AA46C87.png

    前言

    升级数据库是个很繁琐看似很麻烦的事情,有次面试,面试官问了关于增加字段更新数据库升级的问题,我是这么回答的,我说可以做一个数据库迁移拷贝
    ,每次更新版本判断一下,面试官表示很不解,为什么要这么复杂化,重复问了好几次,也许在等我更好的答案;

    需要在已经存在的表里面新增一个或者多个字段,思路应该是这样的;
    先去判断增加的字段是否存在,不存在就去插入:

    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];
    
    

    相关文章

      网友评论

        本文标题:FMDB数据库升级——增加表字段

        本文链接:https://www.haomeiwen.com/subject/zitvbxtx.html