您好,登錄后才能下訂單哦!
本文實例為大家分享了iOS中FMDB事務(wù)實現(xiàn)批量更新數(shù)據(jù),供大家參考,具體內(nèi)容如下
打開數(shù)據(jù)庫(sqlite)
///打開數(shù)據(jù)庫 + (BOOL)openDataBase{ _TYDatabase = [[FMDatabase alloc]initWithPath:[self databasePath]]; if ([_TYDatabase open]) { return YES; } return NO; } ///數(shù)據(jù)庫路徑 + (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; }
事務(wù)
/** 事務(wù) arraySql:SQL語句數(shù)組 */ - (void)beginTransaction:(NSArray *)arraySql; { //// static FMDatabase *_TYDatabase = nil; BOOL isOpen=[_TYDatabase open]; if (!isOpen) { NSLog(@"打開數(shù)據(jù)庫失?。?); 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]; }
多線程事務(wù)
/** 多線程事務(wù) arraySql:SQL語句數(shù)組 */ + (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(@"成功"); } }]; }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。