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(@"成功");
            }
        }];
    }
  • 相关阅读:
    运行级别和root密码找回
    磁盘情况查询
    linux磁盘分区、挂载
    三、本地负载均衡器与openfeign声明式客户端
    二、Nacos服务注册与发现
    一、微服务架构演变过程
    shell工具
    Netty概述
    垃圾回收概述及算法
    执行引擎
  • 原文地址:https://www.cnblogs.com/wangkejia/p/7818236.html
Copyright © 2011-2022 走看看