从sqlite3 db中检索整数值(obj-c中的问题)

时间:2011-05-26 14:22:19

标签: objective-c sqlite integer nsuinteger

在sqlite3数据库中,我有一个包含两个字段的表“data”:type和path。字段类型定义为INTEGER。在此字段中,我插入一个NSUInteger值(例如0或1)。问题是,当我检索它时,我获得了一个“奇怪”的值。我不知道我在哪里犯错。

   if (init_statement == nil) {
        const char *sql = "SELECT type,path FROM data WHERE id=?";
        if (sqlite3_prepare_v2(database, sql, -1, &init_statement, NULL) != SQLITE_OK) {
            NSAssert1(0, @"Error: failed to prepare statement with message '%s'.", sqlite3_errmsg(database));
        }
    }

    sqlite3_bind_int(init_statement, 1, primaryKey);

    if (sqlite3_step(init_statement) == SQLITE_ROW) {
     int type = (int)sqlite3_column_text(init_statement, 0);
     char *relPath = (char *)sqlite3_column_text(init_statement, 1);

    // other stuff
    } 

    // Reset the statement for future reuse.
    sqlite3_reset(init_statement);

1 个答案:

答案 0 :(得分:1)

SQLite只允许64位有符号整数。您正在为其分配无符号整数。改为将其更改为NSInteger。