在我的应用中,我尝试使用查询从数据库中获取单个ID:
SELECT _id FROM rules where codigo_rest = 2345
我将该查询传递给以下函数:
-(NSString *)selectIDrest:(NSString *)query{
NSString * retval;
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(_database, [query UTF8String], -1, &statement, nil)
== SQLITE_OK) {
while (sqlite3_step(statement) == SQLITE_ROW) {
int uniqueId = sqlite3_column_int(statement, 0);
NSLog(@"int %i",uniqueId);
retval = [NSString stringWithFormat:@"%d",uniqueId];
}
sqlite3_finalize(statement);
}
NSLog(@"%@",retval);
return retval;
}
但是retval总是0.,而表内容id是不同的(1,2,3,4 ......等)。 通过NSlogs,我意识到虽然(sqlite3_step(statement)== SQLITE_ROW)从未执行过。 我的错是什么?
答案 0 :(得分:2)
您永远不会执行查询,您只准备执行它。您需要调用sqllite3_step来读取第一行。您可以调用sqllit3_column_int。
您可以在本教程中看到如何调用它:http://www.raywenderlich.com/913/sqlite-tutorial-for-ios-making-our-app