Получение количества строк из интерфейса SQLite C в Objective-C - PullRequest
1 голос
/ 05 октября 2010

Я новичок в приложениях Objective-C и iphone.

Я обращаюсь к SQLite, и у меня в таблице 3 строки "coffee". Я использовал следующий способ, чтобы извлечь что-то из таблицы, однако только тогда вынимаются 2-я и 3-я строки {1-я строка всегда пропускается}. Это из-за логики в моем цикле 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];
   }
  }
 }

С другой стороны, есть ли какой-нибудь удобный для меня способ проверить количество строк, восстановленных в запросе непосредственно из интерфейса C SQLite?

Большое спасибо.

Ответы [ 2 ]

2 голосов
/ 05 октября 2010

Вы можете использовать запрос SELECT COUNT(*) FROM coffee, чтобы узнать количество строк.

А также, избавьте себя от головной боли и используйте оболочку SQLite .

1 голос
/ 05 октября 2010

2 sqlite3_step() вызовы предназначены для выполнения здесь?

   NSLog(@"sqlite3_step returns: %i", sqlite3_step(selectstmt));
   while(sqlite3_step(selectstmt) == SQLITE_ROW {

Кстати: в строке while отсутствует скобка. Не переписывайте свой код для SO. Копировать / Вставить чтобы избежать ошибок копирования (ошибки вставки встречаются гораздо реже)

...