很大程度上是在Ray Wenderlich's SQLite tutorial之后,我正在编写一个相当简单的应用程序,该应用程序显示从服务器提取的信息。我的SQLite查询(到本地数据库,而不是服务器)的基本结构如下:

{
    NSMutableArray *list = [[NSMutableArray alloc] init];
    NSString *query = @"SELECT _id, type FROM table ORDER BY type"; // As appropriate.
    sqlite3_stmt *statement;

    if (sqlite3_prepare_v2(_db, [query UTF8String], -1, &statement, nil) == SQLITE_OK) {
        while (sqlite3_step(statement) == SQLITE_ROW) {
            // Process the returned values...
            int rowNumber = sqlite3_column_int(statement, 0);

            // Initialize the object.
            // Push the object onto the array.
        }
        sqlite3_finalize(statement);
    } else {
        // Log the error.
    }
    return list;
}

我的问题是,如果if语句返回false,那么检查错误的最佳方法是什么? 对我来说,最简单的解决方案似乎是将sqlite3_prepare_v2()的返回值存储为int,并根据SQLITE_OK进行检查。调用sqlite_errmsg()怎么样?

我确实研究过sqlite_exec(),但是我并没有运气去尝试编译,而且我对C的回调的理解还不够自信,无法正确维护使用它们的代码。不过,它传递了一个错误参数,这就是让我首先关注该错误的原因。

最佳答案

如果要获取错误消息,则必须确实调用sqlite3_errmsg
sqlite3_exec将为您提供相同的字符串。

关于ios - 如果sqlite3_prepare_v2()返回1,如何捕获错误代码?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14879279/

10-12 12:49
查看更多