iOS使用事务插入数据
-(void)execInsertTransactionSql:(NSMutableArray *)transactionSql sqliteDB:(sqlite3 *)sqliteDB statement:(sqlite3_stmt *) statement{
//使用事务,提交插入sql语句
@try{
char *errorMsg;
if (sqlite3_exec(sqliteDB, "BEGIN", NULL, NULL, &errorMsg)==SQLITE_OK) {
NSLog(@"启动事务成功");
sqlite3_free(errorMsg);
for (int i = 0; i< transactionSql.count; i++) {
NSString *sqlText = [transactionSql objectAtIndex:i];
if (sqlite3_prepare_v2(sqliteDB,[sqlText UTF8String], -1, &statement,NULL)==SQLITE_OK) {
if (sqlite3_step(statement)!=SQLITE_DONE) sqlite3_finalize(statement);
}
}
if (sqlite3_exec(sqliteDB, "COMMIT", NULL, NULL, &errorMsg)==SQLITE_OK)
NSLog(@"提交事务成功");
sqlite3_free(errorMsg);
}
else sqlite3_free(errorMsg);
} @catch(NSException *e) {
char *errorMsg;
if (sqlite3_exec(sqliteDB, "ROLLBACK", NULL, NULL, &errorMsg)==SQLITE_OK) NSLog(@"回滚事务成功");
sqlite3_free(errorMsg);
} @finally{}
}