2011-05-26 78 views
1

在sqlite3數據庫中,我有一個表「數據」,其中有兩個字段:type和path。字段類型被定義爲INTEGER。在這個字段中,我插入一個NSUInteger值(例如0或1)。問題是,當我檢索它時,我獲得了一個「奇怪」的值。我不知道我在哪裏錯了。從sqlite3數據庫檢索整數值(obj-c中的問題)

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

SQLite只允許64位有符號整數。您正在爲其分配一個無符號整數。改爲改爲NSInteger。

+0

我將其更改爲NSInteger。插入正確的值,但是當我用上面的代碼檢索它時,情況並非如此。 – Sefran 2011-05-26 15:44:47

+0

你爲什麼不把它重新放回到'NSInteger'? – 2011-05-26 15:49:09

+0

如果我施放它,也有同樣的問題。我會做一些其他的測試。 – Sefran 2011-05-26 16:06:21