iOS-FMDB事务【批量更新数据库】_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > iOS-FMDB事务【批量更新数据库】

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

 2017/11/11 11:03:23  小圭哥  程序员俱乐部  我要评论(0)
  • 摘要:打开数据库(sqlite)///打开数据库+(BOOL)openDataBase{_TYDatabase=[[FMDatabasealloc]initWithPath:[selfdatabasePath]];if([_TYDatabaseopen]){returnYES;}returnNO;}///数据库路径+(NSString*)databasePath{NSString*documentPath=[NSSearchPathForDirectoriesInDomains
  • 标签:iOS 数据库 数据

打开数据库(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(@"成功");
        }
    }];
}

 

发表评论
用户名: 匿名