iOS 更新增加数据库字段

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
- (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];
    }];
}
posted @   Jun Wang  阅读(1261)  评论(0编辑  收藏  举报
编辑推荐:
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
阅读排行:
· DeepSeek智能编程
· 精选4款基于.NET开源、功能强大的通讯调试工具
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
点击右上角即可分享
微信分享提示