Objective-c – iOS SQLite FMDB交易..正确使用?

前端之家收集整理的这篇文章主要介绍了Objective-c – iOS SQLite FMDB交易..正确使用?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我将尝试使用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
}

猜你在找的C&C++相关文章