【发布时间】: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以外的任何内容,也要记录一些内容。