我现在使用最新的Xcode和sqlite3已经4天了,而且我有点疯狂,因为我只是感到毛骨悚然的行为。
我这样做:
NSString *selectWPIDQuery = [NSString stringWithFormat:@"SELECT ID FROM WORKOUTPLANS WHERE NAME = '%s';", [[aWorkoutPlan name] UTF8String]];
//NSLog(@"%@", [aWorkoutPlan name]);
const char *select_wp_id_query = [selectWPIDQuery UTF8String];
if(sqlite3_open([dbPathString UTF8String], &workoutPlansDB) == SQLITE_OK) {
int index = sqlite3_exec(workoutPlansDB, select_wp_id_query, NULL, NULL, &error);
NSLog(@"Der Index %d", index);
}
此处的索引为0但不存在0。如果我用firefox插件sqlite管理器执行此查询(完全相同的查询),它会传递给我索引1,索引1是correkt。
为什么xcode中的地狱sqlite3给了我一个0 ???那不正确。
答案 0 :(得分:2)
您错误地使用了sqlite3_exec
。它返回结果代码,而不是索引。结果代码0是SQLITE_OK
,而结果代码1是SQLITE_ERROR
。
请参阅sqlite3_exec
documentation。您必须提供回调才能获取查询结果,或使用通用sqlite3_prepare_v2()
,sqlite3_step()
和sqlite3_finalize()
API。