我不知道确切的问题,但现在已经摸不着头脑了近4个小时。
if (sqlite3_open([dataBasePath UTF8String], &bookDB) == SQLITE_OK) {
NSString *Query = [NSString stringWithFormat:@"SELECT * FROM linktable WHERE pageid = 2"];
if (sqlite3_prepare_v2(bookDB, [Query UTF8String], -1, &statement1, nil) == SQLITE_OK) {
markupsArray = [NSMutableArray arrayWithCapacity:1];
NSLog(@"sqlite3_step(statement1) is %d",sqlite3_step(statement1));
while (sqlite3_step(statement1) == SQLITE_ROW) {
NSLog(@"yup");
MarkupData *markUpObject = [[MarkupData alloc] init];
markUpObject.linkID = [[[NSString alloc] initWithUTF8String:(const char*) sqlite3_column_text(statement1, 0)] autorelease];
markUpObject.pageID = [[[NSString alloc] initWithUTF8String:(const char*) sqlite3_column_text(statement1, 1)] autorelease];
markUpObject.markupID = [[[NSString alloc] initWithUTF8String:(const char*) sqlite3_column_text(statement1, 2)] autorelease];
markUpObject.folioNumber = [[[NSString alloc] initWithUTF8String:(const char*) sqlite3_column_text(statement1, 5)] autorelease];
[markupsArray addObject:markUpObject];
}
}
}
这是奇怪的事情。 sqlite3_step(statement1)
的值为100,SQLITE_ROW
的值也是100。但即使这样,while循环也没有被执行。任何人都可以帮我解决这个奇怪的场景吗...刚刚来到这里...... :(
答案 0 :(得分:2)
如果您的sqlite查询只返回1条记录,sqlite3_step()
实际上会逐步完成记录。由于您的NSLog
语句正在执行sqlite3_step()
,因此该记录已在此处逐步执行。因此,您的while
循环将不会执行,因为没有更多行要逐步执行。