当前位置: 移动技术网 > 移动技术>移动开发>IOS > iOS中FMDB事务实现批量更新数据

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

2019年07月24日  | 移动技术网移动技术  | 我要评论

本文实例为大家分享了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(@"成功");
    }
  }];
}

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网