• iOS 更新增加数据库字段


    在iOS中新版本更新涉及字段改动时有发生,为保留原有数据完成数据更新,可以采用一下代码

    - (void)alterItemTableToAddFilterColumnsIfNeeded {
        [self alterItemTableToAddFilterColunm:@"Color"];
        [self alterItemTableToAddFilterColunm:@"FashionStyle"];
        [self alterItemTableToAddFilterColunm:@"Category"];
    }
    
    - (void)alterItemTableToAddFilterColunm:(NSString *)columnName {
        //没有添加该列则修改添加
        if (![self checkFilterColumnExists:columnName]) {
            [self alterItemTableToAddColumn:columnName];
        }
    }
    
    - (BOOL)checkFilterColumnExists:(NSString *)columnName {
        __block BOOL returnBool = NO;
        
        [_queue inDatabase:^(FMDatabase *db) {
            [db open];
    
            FMResultSet *resultSet = [db executeQuery:[NSString stringWithFormat:@"PRAGMA table_info(%@)", @"Item"]];
            NSMutableArray* columnNames = [[NSMutableArray alloc] init];
            while ([resultSet next]) {
                if ([[resultSet stringForColumn:@"name"] isEqualToString: columnName]) {
                    returnBool = YES;
                    break;
                }
            }
            [db close];
        }];
        
        return returnBool;
    }
    
    - (void)alterItemTableToAddColumn:(NSString *)columnName {
        NSString *alterSql = [NSString stringWithFormat:@"ALTER TABLE Item ADD COLUMN %@ TEXT DEFAULT ''", columnName, nil];
        
        [_queue inDatabase:^(FMDatabase *db) {
            [db open];
    
            if ([db executeUpdate:alterSql]) {
                NSLog(@"Alter Item Filter Success!");
            } else {
                NSLog(@"Alter Item Filter Error!");
            }
            
            [db close];
        }];
    }
  • 相关阅读:
    经典排序——希尔排序
    经典排序——插入排序
    使用Ajax验证用户名是否存在
    样式小记
    JavaScript学习笔记(二)
    SpringBoot访问静态视图的两种方式
    扩展SpringMVC-Configuration
    ViewResolver -Springboot中的视图解析器
    SpringBoot必知必会-yaml基础语法
    IDE 下载资源整理
  • 原文地址:https://www.cnblogs.com/junwang/p/3467185.html
Copyright © 2020-2023  润新知