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

所属分类: 软件编程 / IOS 阅读数: 2095
收藏 0 赞 0 分享

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

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

更多精彩内容其他人还在看

iOS App中UILabel的自定义及在Auto Layout中的使用

这篇文章主要介绍了iOS App中UILabel的自定义及在Auto Layout中的使用,示例代码为传统的Objective-C语言,需要的朋友可以参考下
收藏 0 赞 0 分享

iOS应用开发中UITableView的分割线的一些设置技巧

这篇文章主要介绍了iOS应用开发中UITableView分割线的一些设置技巧,包括消除分割线的方法,示例代码为传统的Objective-C语言,需要的朋友可以参考下
收藏 0 赞 0 分享

详解iOS时间选择框

这篇文章主要为大家详细介绍了详解iOS时间选择框,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

详解iOS App开发中UIViewController的loadView方法使用

这篇文章主要介绍了详解iOS App开发中UIViewController的loadView方法使用,讲解了访问view属性时loadView方法的调用及使用loadView时的一些注意点,需要的朋友可以参考下
收藏 0 赞 0 分享

详解在iOS App中自定义和隐藏状态栏的方法

这篇文章主要介绍了在iOS App中自定义和隐藏状态栏的方法,在顶部时某些状况下即用应用内的状态栏覆盖系统本身的,代码示例为Objective-C语言,需要的朋友可以参考下
收藏 0 赞 0 分享

iOS开发实现音频播放功能

本文给大家分享的是在IOS开发过程中实现音频播放的功能,讲解的十分细致,有需要的小伙伴可以参考下
收藏 0 赞 0 分享

IOS开发实现录音功能

本文给大家分享的是一个IOS开发中实现录音功能的实例,并简单给大家解析一下,有需要的小伙伴可以参考下
收藏 0 赞 0 分享

iOS实现图片轮播效果

这篇文章主要为大家详细介绍了IOS实现图片轮播效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

iOS通过http post上传图片

这篇文章主要介绍了iOS通过http post上传图片的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

IOS框架Spring常用的动画效果

本文给大家介绍的是在IOS开发中常用的动画效果以及自定义转场动画特效的代码,非常的简单实用,有需要的小伙伴可以参考下
收藏 0 赞 0 分享
查看更多