【问题标题】:Retrieve data from sqlite, always return null从 sqlite 检索数据,总是返回 null
【发布时间】:2013-09-11 14:05:41
【问题描述】:

我的表中有 2 列(wordid、word)。我尝试检索单词来测试 sqlite 部分。 并且下面的语句总是返回 NULL。我很确定我的数据库没有问题,因为我已经在 Firefox 附加组件(sqlite 管理器)中测试了该语句。

NSString *str;    

const char *dbpath = [_databasePath UTF8String];
sqlite3_stmt *statement;

if (sqlite3_open(dbpath, &_db) == SQLITE_OK){


    NSString *querySQL = [NSString stringWithFormat:@"SELECT word FROM Circle_En WHERE wordid=2"];

    const char *query_stmt = [querySQL UTF8String];

    if (sqlite3_prepare_v2(_db,query_stmt, -1, &statement, NULL) == SQLITE_OK){
        if (sqlite3_step(statement) == SQLITE_ROW){
            str = [[NSString alloc]initWithUTF8String:(char *) sqlite3_column_text(statement, 0)];
        }
    }

    sqlite3_finalize(statement);
    sqlite3_close(_db);
}

感谢任何建议。

最好的问候,
塔哈

【问题讨论】:

  • 旁注:格式字符串完全是多余的。
  • 如果准备语句失败,您似乎不会做任何事情。如果准备没有返回SQLITE_OK,则记录sqlite3_errmsg。如果sqlite3_step 返回SQLITE_DONE 以外的任何内容,也要记录一些内容。

标签: ios sqlite


【解决方案1】:

你在列号部分做错了。

因为单词在 index(columnnumber) 1 处。 所以你需要有这个:

str = [[NSString alloc]initWithUTF8String:(char *) sqlite3_column_text(statement, 1)];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-16
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    • 2019-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多