查看: 432|回复: 0

[IOS开发教程] iOS中FMDB事务实现批量更新数据

发表于 2017-11-29 08:00:04

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

打开数据库(sqlite)

  1. ///打开数据库
  2. + (BOOL)openDataBase{
  3. _TYDatabase = [[FMDatabase alloc]initWithPath:[self databasePath]];
  4. if ([_TYDatabase open]) {
  5. return YES;
  6. }
  7. return NO;
  8. }
  9. ///数据库路径
  10. + (NSString *)databasePath{
  11. NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
  12. NSString *dataPath = [documentPath stringByAppendingPathComponent:@"TY.SQLite"];
  13. NSFileManager *fileM = [NSFileManager defaultManager];
  14. if (![fileM fileExistsAtPath:dataPath]) {
  15. NSString *filePath = [[NSBundle mainBundle] pathForResource:@"TY" ofType:@"SQLite"];
  16. [fileM copyItemAtPath:filePath toPath:dataPath error:nil];
  17. }
  18. NSLog(@"%@",dataPath);
  19. return dataPath;
  20. }
复制代码

事务

  1. /**
  2. 事务
  3. arraySql:SQL语句数组
  4. */
  5. - (void)beginTransaction:(NSArray *)arraySql;
  6. {
  7. //// static FMDatabase *_TYDatabase = nil;
  8. BOOL isOpen=[_TYDatabase open];
  9. if (!isOpen) {
  10. NSLog(@"打开数据库失败!");
  11. return;
  12. }
  13. ///开始事物
  14. [_TYDatabase beginTransaction];
  15. BOOL isRollBack = NO;
  16. @try {
  17. for (int i = 0; i<arraySql.count; i++) {
  18. BOOL result = [_TYDatabase executeUpdate:arraySql[i]];
  19. if (!result) {
  20. NSLog(@"操作失败【%d】== SQL:%@",i,arraySql[i]);
  21. }
  22. }
  23. }
  24. @catch (NSException *exception) {
  25. isRollBack = YES;
  26. ///回滚
  27. [_TYDatabase rollback];
  28. }
  29. @finally {
  30. if (!isRollBack) {
  31. ///提交
  32. [_TYDatabase commit];
  33. }
  34. }
  35. [_TYDatabase close];
  36. }
复制代码

多线程事务

  1. /**
  2. 多线程事务
  3. arraySql:SQL语句数组
  4. */
  5. + (void)beginTransactionT:(NSArray *)arraySql{
  6. FMDatabaseQueue *databaseQueue = [FMDatabaseQueue databaseQueueWithPath:[self databasePath]];
  7. [databaseQueue inTransaction:^(FMDatabase *db, BOOL *rollback) {
  8. BOOL result = NO;
  9. for (int i = 0; i < arraySql.count; i++) {
  10. result = [_TYDatabase executeUpdate:arraySql[i]];
  11. }
  12. if (result) {
  13. NSLog(@"成功");
  14. }
  15. }];
  16. }
复制代码

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



回复

使用道具 举报

关闭

站长推荐上一条 /1 下一条