2018-11-22 ios的FMDB数据库使用事务操作

之前本菜鸡一直操作数据库都是直接fmdb语句就开始搞起来,今天遇到一个问题,数据过多(1k+)的写入时间会很久,然后本菜鸡又学会了一种 对数据库进行事物操作。之前每次executeUpdate都是一次事务操作,过程是:开始新事务-->插入数据-->提交事务。我们向数据库中插入多少条数据,这个过程就会执行多少次,当数据量变大的时候时间就会变得超级长。所以要先把所有的操作放在缓存里面,然后把整个缓存提交,进行一次事物操作,时间就会大大缩短。

代码如下:


//NSLog(@"**********开始事务操作*************");
[_fsXLdb shouldCacheStatements]; // 开启缓存
[_fsXLdb beginTransaction]; // 事务操作
BOOL isRollBack =NO;
@try{
    for(FSZDModel*modelindbMA) {
    BOOL flag = [_fsXLdb executeUpdate:@"insert into FUSHAN_STATION (STATION_ID,XL,XLMC ,ZD ,ZDNAME ,SXX ,JD ,WD,LAT,LON) values(?,?,?,?,?,?,?,?,?,?)",model.STATION_ID,model.XL,model.XLMC,@(model.ZD),model.ZDNAME,model.SXX,model.JD,model.WD,[NSString stringWithFormat:@"%f",coor.latitude],[NSString stringWithFormat:@"%f",coor.longitude]];
    //            if (flag) {
     //                NSLog(@"插入成功");
     //            }else{
    //                NSLog(@"插入失败");
    //            }
            }
     }
@catch(NSException *exception) {
      isRollBack =YES;
      [_fsXLdbrollback];// 回滚
      }
@finally{
    if(!isRollBack) {
        [_fsXLdbcommit];
      }
    }

你可能感兴趣的:(2018-11-22 ios的FMDB数据库使用事务操作)