iOS中FMDB事务实现批量更新数据

Phyllis ·
更新时间:2024-11-10
· 944 次阅读

本文实例为大家分享了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数据库之增删改查使用实例iOS学习笔记(十六)——详解数据库操作(使用FMDB)iOS开发中使用FMDB来使程序连接SQLite数据库



批量更新 更新 数据 fmdb IOS

需要 登录 后方可回复, 如果你还没有账号请 注册新账号