我是objective-C和iphone应用程序的新手。
我正在访问SQLite,在“coffee”表中有3行。我用下面的方法从表中取出某物,但是,只有第2行和第3行被拉出{总是遗漏第1行}。这是因为while循环中的逻辑,通过检查while sqlite3_step(selectstmt)返回SQLITE_ROW是错误的吗?代码如下:
if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) {
const char *sql = "select coffeeID, coffeeName from coffee";
sqlite3_stmt *selectstmt;
NSLog(@"sqlite_prepare_v2 returns: %i", sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL));
if(sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL) == SQLITE_OK) {
NSLog(@"sqlite3_step returns: %i", sqlite3_step(selectstmt));
while(sqlite3_step(selectstmt) == SQLITE_ROW) {
NSInteger primaryKey = sqlite3_column_int(selectstmt, 0);
Coffee *coffeeObj = [[Coffee alloc] initWithPrimaryKey:primaryKey];
coffeeObj.coffeeName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 1)];
NSLog(@"this is the coffee name: %@", coffeeObj.coffeeName);
coffeeObj.isDirty = NO;
[appDelegate.coffeeArray addObject:coffeeObj];
[coffeeObj release];
}
}
}
另一方面,有什么方便的方法可以直接从SQLite的C接口检查查询中的returen行数吗?
非常感谢。
最佳答案
您可以使用查询SELECT COUNT(*) FROM coffee
来告诉您有多少行。
同时,省去一些头痛和use a SQLite wrapper。