iOS数据库 创建事物插入 一条条插入非常耗时

1、从服务器获取数据  进行排序并插入到数据库

获取数据

NSMutableArray *arr = [NSMutableArray array];
    
    
    if ([[result class] isSubclassOfClass:[NSArray class]]) {
        for (Station *obj in result) {
            NSString *sectionName = [[NSString stringWithFormat:@"%c",pinyinFirstLetter([obj.stationName characterAtIndex:0])] uppercaseString];
            NSUInteger firstLetter = [ALPHA rangeOfString:[sectionName substringToIndex:1]].location;
            if (firstLetter != NSNotFound)
            {
                obj.sortLetters = sectionName;
                obj.firstLetter = [NSString stringWithFormat:@"%lu", (unsigned long)firstLetter];
            }
            [arr addObject:obj];
        }
    }
    StationDAO *bl = [StationDAO sharedManager];
    [bl insertDataWithArray:arr];


插入到数据库方法- (void)insertDataWithArray:(NSMutableArray *)array

- (void)insertDataWithArray:(NSMutableArray *)array{
    
    FMDatabase *db = [FMDatabase databaseWithPath:DATABASE_PATH];
    if (![db open]) {
        NSLog(@"数据库打开失败");
    };
    
    [db beginTransaction];
    BOOL isRollBack = NO;
    @try
    {
        for (int i = 0; i<array.count; i++)
        {
            
            Station *obj = array[i];
             NSString *insertStr = [NSString stringWithFormat:@"INSERT INTO '%@' ('custId','stationCode','stationName','firstLetter','sortLetters') VALUES (?,?,?,?,?)", MSD_STATION];
            
            [db executeUpdate:insertStr, CUST_ID, obj.stationCode, obj.stationName, obj.firstLetter, obj.sortLetters];
            
           
            
        }
        
    }
    @catch (NSException *exception)
    {
        isRollBack = YES;
        [db rollback];
    }
    @finally
    {
        if (!isRollBack)
        {
            [db commit];
        }
    }
    [db close];
    
}




这种插入方式 比传统的插入方式快太多  


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值