FMDB 批量操作

我们往数据库插入一条数据的过程:开始新事物->插入数据->提交事务
如果我们要插入1000条数据就要把上面的步骤重复执行1000次,FMDB在iOS中算是插入数据比较快的了,但如果数目稍微大些就会产生等待,对于用户体验不好,而事务的使用可以大大缩短插入时间。
FMDB使用事务操作和不使用事务操作插入数据使用的时间差距很大,具体例子如下

  BOOL isSuccess = NO;
[self openDataBase];
if ([self.DB open]) {
    [self.DB beginTransaction];
    BOOL isRollBack = NO;
    @try {
        for (int i = 0; i < dataArray.count; i++) {
            LiveMemberModel *model = dataArray[i];
              NSMutableDictionary *parameter= [NSDictionary dictionaryWithModel:model];
            NSArray *parameterDicKeyArray = [parameter allKeys];
            NSMutableString *str1 = [[NSMutableString alloc]init];
            for(NSString *key in parameterDicKeyArray)
                [str1 appendFormat:@"'%@', ", key];
            [str1 replaceOccurrencesOfString:@", " withString:@"" options:NSCaseInsensitiveSearch range:NSMakeRange(str1.length-2, 2)];
            NSMutableString *str2 = [[NSMutableString alloc]init];
            for (NSString *key in parameterDicKeyArray) {
                [str2 appendFormat:@"'%@', ", parameter[key]];
            }
             [str2 replaceOccurrencesOfString:@", " withString:@"" options:NSCaseInsensitiveSearch range:NSMakeRange(str2.length-2, 2)];
             NSString *insertStr = [NSString stringWithFormat:@"insert into '%@'(%@) values(%@)",tableName, str1, str2];
           isSuccess = [self.DB executeUpdate:insertStr];
              DebugLog(@"%@", isSuccess ? @"批量插入成功" : @"批量插入失败");
        }
    } @catch (NSException *exception) {
        isRollBack = YES;
        [self.DB rollback];
    } @finally {
        if (!isRollBack) {
            [self.DB commit];
        }
    }
}
[self.DB close];
if(isSuccess)
    return 1;
else
    return 0;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值