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(@"成功");
        }
    }];
}

 

posted @ 2017-11-11 09:35  macroK  阅读(521)  评论(0编辑  收藏  举报