Получить данные из SQLite с помощью - PullRequest
3 голосов
/ 10 августа 2011

Я пытаюсь изучить API sqlite3 с помощью c, затем я создал таблицу для хранения имен и телефонов, которая называется повестки дня.Тогда я заполнил это с 3 рядами.Моим следующим шагом было создание следующего кода c:

#include <stdio.h>
#include <sqlite3.h>

int main(int argc, char **argv)
{
  sqlite3 *db;
  sqlite3_stmt *res;
  const char *tail;
  int count = 0;

  if(sqlite3_open("agenda.db", &db))
  {
    sqlite3_close(db);
    printf("Can't open database: %s\n", sqlite3_errmsg(db));
    return(1);
  }

  printf("Database connection okay!\n");

  if(sqlite3_prepare_v2(db, "SELECT phone,name FROM agenda ORDER BY name", 128, &res, &tail) != SQLITE_OK)
  {
    sqlite3_close(db);
    printf("Can't retrieve data: %s\n", sqlite3_errmsg(db));
    return(1);
  }

  printf("Reading data...\n");

  printf("%16s | %32s\n", "Phone", "Name");

  while(sqlite3_step(res) != SQLITE_ROW)
  {
    printf("%16s | %32s\n",
           sqlite3_column_text(res, 0),
           sqlite3_column_text(res, 1));

    count++;
  }

  printf("Rows count: %d\n", count);

  sqlite3_finalize(res);

  sqlite3_close(db);

  return(0);
}

Затем скомпилировал его с помощью gcc -o agenda agenda.c -lsqlite3 -Wall -ggdb.Но результат, который я получаю всегда:

Database connection okay!
Reading data...
           Phone |                             Name
Rows count: 0

Но на самом деле в файле agenda.db есть 3 строки.Что я делаю не так?

1 Ответ

9 голосов
/ 10 августа 2011

Я полагаю, вы хотите while (sqlite3_step(res) == SQLITE_ROW) { вместо !=

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...