1

sqlite3 データベースには、タイプとパスの 2 つのフィールドを持つテーブル「データ」があります。フィールド タイプは 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);
4

1 に答える 1

1

SQLite は 64 ビットの符号付き整数のみを許可します。符号なし整数を割り当てています。代わりに NSInteger に変更してください。

于 2011-05-26T14:28:36.233 に答える