[FMDBManager inDatabase:^(FMDatabase *db) { [db shouldCacheStatements]; //開始啟動事務 [db beginTransaction]; BOOL isRollBack = NO; @try { for (NSDictionary *dic in resultDic[@"events"]) { //replace into 首先嘗試插入數據到表中, 1. 如果發現表中已經有此行數據(根據主鍵或者唯一索引判斷)則先刪除此行數據,然后插入新的數據。 2. 否則,直接插入新數據。 NSString *sql = [NSMutableString stringWithFormat:@"replace into events values('%@','%@','%@','%@','0','0')",dic[@"id"],dic[@"title"],dic[@"src"],dic[@"type"]]; BOOL a = [db executeUpdate:sql]; if (!a) { NSLog(@"插入失敗1"); } } } @catch (NSException *exception) { isRollBack = YES; [db rollback]; } @finally { if (!isRollBack) { [db commit]; } } }]; }