ios - 如果 sqlite3_prepare_v2() 返回一个错误代码,我该如何获取错误代码?

标签 ios objective-c c error-handling sqlite

主要关注 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,检查错误的最佳方法是什么? 对我来说最简单的解决方案似乎是存储 的返回值code>sqlite3_prepare_v2() 作为 int 并根据 SQLITE_OK 检查that。如何调用 sqlite_errmsg()

我确实研究了 sqlite_exec() 但我没有任何运气来尝试编译,而且我对我对 C 中回调的理解不足以正确维护代码使用它们。不过,它为错误传递了一个参数,这正是我首先研究它的原因。

最佳答案

如果你想得到一条错误信息,你必须确实调用sqlite3_errmsg

sqlite3_exec 会给你相同的字符串。

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

相关文章:

android - 使用超声波确定 2 个移动设备的相对位置

ios - 使用 Swift 4,如何获取本地存储的图像?

iphone - 如何在 iPhone 中添加左右对齐(两者)的单元格详细信息文本?

c - 如何在 C 中对 argv 的元素进行排序?

c - 如何找到无符号长整型中的所有质因数?

c - 第二次使用 sqlite3_prepare_v2 时 SQLite 崩溃

iOS网络问题。 TLS Session缓存漏洞

iphone - 您可以在 iPhone/iPad 上的 View 之间执行的完整转换列表

ios - 解析函数 `findObjectsInBackgroundWithBlock:` 检索部分数据库对象,但不是全部

ios - 如何移动用 UIBezierPath 创建的线?