代码之家  ›  专栏  ›  技术社区  ›  Rudiger

奇怪的SQLite问题测试是否返回了列

  •  0
  • Rudiger  · 技术社区  · 14 年前

    我想最好的办法是向代码展示我在结果中所做的:

    if (sqlite3_column_text(statement, 0)) {
        [marker setObject:[NSNumber numberWithInt: sqlite3_column_int(statement, 0)] forKey:@"id"];
    }
    

    对于if语句,它总是返回false:

    if (sqlite3_column_int(statement, 0)) {
        [marker setObject:[NSNumber numberWithInt: sqlite3_column_int(statement, 0)] forKey:@"id"];
    }
    

    这将为列返回不正确的结果:

    if (sqlite3_column_text(statement, 0)) {
        [marker setObject:[NSNumber numberWithInt: sqlite3_column_text(statement, 0)] forKey:@"id"];
    }
    

    1 回复  |  直到 14 年前
        1
  •  1
  •   lucius    14 年前

    在尝试访问列的值之前,应该先获取返回的列数。

    int count = sqlite3_column_count (statement);
    

    sqlite3_column_type () == SQLITE_NULL;
    

    另外,Obj-C不会自动转换不同的类型,因此 numberWithInt: sqlite3_column_text