欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2023-12-17 20:55:40
本文实例为大家分享了ios中fmdb事务实现批量更新数据,供大家参考,具体内容如下 打开数据库(sqlite) ///打开数据库 + (bool)openda...

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

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

上一篇:

下一篇: