Objective-c – iOS SQLite FMDB交易..正确使用?
发布时间:2020-12-16 05:45:30 所属栏目:百科 来源:网络整理
导读:我将尝试使用FMDB SQLite iOS包装器进行交易. 文档对交易有点模糊,但从快速浏览一些功能我已经提出了以下逻辑: [fmdb beginTransaction]; // Run the following query BOOL res1 = [fmdb executeUpdate:@"query1"]; BOOL res2 = [fmdb executeUpdate:@"quer
我将尝试使用FMDB SQLite iOS包装器进行交易.
文档对交易有点模糊,但从快速浏览一些功能我已经提出了以下逻辑: [fmdb beginTransaction]; // Run the following query BOOL res1 = [fmdb executeUpdate:@"query1"]; BOOL res2 = [fmdb executeUpdate:@"query2"]; if(!res1 || !res2) [fmdb rollback]; else [fmdb commit]; 解决方法
如果第一次失败,我不会尝试第二次更新.
bool ret = false; [fmdb beginTransaction]; ret = [fmdb executeUpdate:@"query1"]; if (ret) { ret = [fmdb executeUpdate:@"query2"]; if (!ret) { // report error 2 } } if(ret) { if (![fmdb commit]) { // panic! } } else { if (![fmdb rollback]) { // panic! } } 对于偏执狂的鲁棒性,你应该尝试… catch块,以防任何事情引起异常.如果你这样做,你可以利用它来获得优势. [fmdb beginTransaction]; @try { if (![fmdb executeUpdate:@"query1"]) { // report error @throw someExcpetion; } if (![fmdb executeUpdate:@"query2"]) { // report error @throw someExcpetion; } [fmdb commit] } @catch(NSException* e) { [fmdb rollback]; // rethrow if not one of the two exceptions above } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |