zoukankan      html  css  js  c++  java
  • 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(@"成功");
            }
        }];
    }
  • 相关阅读:
    hust 1260 Dominos && hust 1516 Dominos
    poj 1149 PIGS
    hust 1230 beautiful
    poj 1469 COURSES
    hdu 3062 Party
    hust 1027 Enemy Target!
    hdu 3415 Max Sum of Max-K-sub-sequence
    简单的实现轮播代码
    window.parent与window.openner区别介绍
    plupload使用指南(转)
  • 原文地址:https://www.cnblogs.com/wangkejia/p/7818236.html
Copyright © 2011-2022 走看看