iOS 更新增長數據庫字段

在iOS中新版本更新涉及字段改動時有發生,爲保留原有數據完成數據更新,能夠採用一下代碼orm

- (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];
    }];
}
相關文章
相關標籤/搜索