• 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(@"成功");
            }
        }];
    }
  • 相关阅读:
    使用supervisor过程的坑
    为apache安装mod_wsgi的时候出现-fpic的问题
    信息生成二维码的方法
    mac下virtualbox安装win7系统
    js读取json方法
    如何读取抓取的wifi包内容
    python文章学习列表
    sqlserver中drop、truncate和delete语句的用法
    UE中使用正则表达式的一些技巧
    指定IE浏览器渲染方式
  • 原文地址:https://www.cnblogs.com/wangkejia/p/7818236.html
Copyright © 2020-2023  润新知