如果sqlite3_prepare_v2()返回错误代码,我如何获取错误代码?

ele*_*ele 7 c sqlite error-handling objective-c ios

很大程度上遵循Ray Wenderlich的SQLite教程,我正在编写一个相当简单的应用程序,显示从服务器下载的信息.我的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;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果if语句返回false ,检查错误的最佳方法什么对我来说,最简单的解决方法似乎就是存储的返回值sqlite3_prepare_v2()作为int检查SQLITE_OK.打电话sqlite_errmsg()怎么样?

我确实调查了sqlite_exec()但是我没有任何运气来进行编译,我对我对C中的回调的理解没有足够的信心来正确维护使用它们的代码.它传递了一个错误的参数,这是让我首先看到它的原因.

CL.*_*CL. 3

如果您想获得错误消息,您确实必须调用sqlite3_errmsg.

sqlite3_exec会给你相同的字符串。