文档对交易有点模糊,但从快速浏览一些功能我已经提出了以下逻辑:
[fmdb beginTransaction]; // Run the following @R_301_5962@ BOol res1 = [fmdb executeUpdate:@"@R_301_5962@1"]; BOol res2 = [fmdb executeUpdate:@"@R_301_5962@2"];if(!res1 || !res2) [fmdb rollback];else [fmdb commit];解决方法 如果第一次失败,我不会尝试第二次更新.
bool ret = false;[fmdb beginTransaction];ret = [fmdb executeUpdate:@"@R_301_5962@1"];if (ret){ ret = [fmdb executeUpdate:@"@R_301_5962@2"]; if (!ret) { // report error 2 }}if(ret) { if (![fmdb commit]) { // panic! }}else{ if (![fmdb rollback]) { // panic! }}
对于偏执狂的鲁棒性,你应该尝试… catch块,以防任何事情引起异常.如果你这样做,你可以利用它来获得优势.
[fmdb beginTransaction];@try{ if (![fmdb executeUpdate:@"@R_301_5962@1"]) { // report error @throw someExcpetion; } if (![fmdb executeUpdate:@"@R_301_5962@2"]) { // report error @throw someExcpetion; } [fmdb commit]}@catch(NSException* e){ [fmdb rollback]; // rethrow if not one of the two exceptions above}总结
以上是内存溢出为你收集整理的Objective-c – iOS SQLite FMDB交易..正确使用?全部内容,希望文章能够帮你解决Objective-c – iOS SQLite FMDB交易..正确使用?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)