iOS-FMDB事务批量更新数据库

Posted 小K’s Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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-FMDB事务批量更新数据库的主要内容,如果未能解决你的问题,请参考以下文章

使用事务的 DAO 记录集批量更新(excel)

Neo4j 第五篇:批量更新数据

Neo4j 第五篇:批量更新数据

thinkphp对180万数据批量更新支持事务回滚

SQL批量添加,更新,删除

Mybaits的批量操作包括批量删除 批量增加和批量更新