首页 > 系统 > iOS > 正文

iOS中FMDB事务实现批量更新数据

2020-07-26 02:37:44
字体:
来源:转载
供稿:网友

本文实例为大家分享了iOS中FMDB事务实现批量更新数据,供大家参考,具体内容如下

打开数据库(sqlite)

///打开数据库+ (BOOL)openDataBase{    _TYDatabase = [[FMDatabase alloc]initWithPath:[self databasePath]];  if ([_TYDatabase open]) {    return YES;  }  return NO;}///数据库路径+ (NSString *)databasePath{  NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];  NSString *dataPath = [documentPath stringByAppendingPathComponent:@"TY.SQLite"];  NSFileManager *fileM = [NSFileManager defaultManager];  if (![fileM fileExistsAtPath:dataPath]) {    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"TY" ofType:@"SQLite"];    [fileM copyItemAtPath:filePath toPath:dataPath error:nil];  }  NSLog(@"%@",dataPath);  return dataPath;  }

事务

/** 事务 arraySql:SQL语句数组 */- (void)beginTransaction:(NSArray *)arraySql;{  //// static FMDatabase *_TYDatabase = nil;  BOOL isOpen=[_TYDatabase open];  if (!isOpen) {    NSLog(@"打开数据库失败!");    return;  }  ///开始事物  [_TYDatabase beginTransaction];  BOOL isRollBack = NO;  @try {    for (int i = 0; i<arraySql.count; i++) {      BOOL result = [_TYDatabase executeUpdate:arraySql[i]];      if (!result) {        NSLog(@"操作失败【%d】== SQL:%@",i,arraySql[i]);      }    }  }  @catch (NSException *exception) {    isRollBack = YES;    ///回滚    [_TYDatabase rollback];  }  @finally {    if (!isRollBack) {      ///提交      [_TYDatabase commit];    }  }  [_TYDatabase close];}

多线程事务

/** 多线程事务 arraySql:SQL语句数组 */+ (void)beginTransactionT:(NSArray *)arraySql{  FMDatabaseQueue *databaseQueue = [FMDatabaseQueue databaseQueueWithPath:[self databasePath]];  [databaseQueue inTransaction:^(FMDatabase *db, BOOL *rollback) {    BOOL result = NO;    for (int i = 0; i < arraySql.count; i++) {      result = [_TYDatabase executeUpdate:arraySql[i]];    }    if (result) {      NSLog(@"成功");    }  }];}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表