Почему sqlite3_data_count () возвращает 0, если db содержит данные?

У меня есть база данных sqlite со следующими данными:

[ouhma@testing ~]$ sqlite3 /home/ouhma/test.db "select col1, col2 from mytable;"
201507|9063104793
201507|9212527372
201507|9212533474
201507|9212575626
201507|9212576618
201507|9212587832
201507|9322355921
201507|9322743536
201507|9334886428
201507|9334901403

Но когда я пытаюсь сделать тот же запрос, запущенный в программе C таким образом:

if (sqlite3_open(filedb, &db) != SQLITE_OK) {
    fprintf(stderr, "Error opening db: %s
", sqlite3_errmsg(db));
    return EXIT_FAILURE;
}

char * sql = "select col1, col2 from mytable;";

iret = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL);
if (iret != SQLITE_OK) {
    printf("Error SQLITE %d when preparing the query.
", iret);
    return EXIT_FAILURE;
}

ncolumns = sqlite3_data_count(stmt);
printf("Columns: %d
", ncolumns);

if (ncolumns == 0) {
    printf("No data :(
");
    sqlite3_finalize(stmt);
    return EXIT_SUCCESS;
}

...

Вместо того, чтобы возвращать те же строки, что и раньше, число данных равно нулю, а затем я не могу получить необходимую мне информацию.

[ouhma@testing ~]$ /home/ouhma/querydb2 /home/ouhma/query.txt /home/ouhma/test.db /home/ouhma/output.txt
Columns: 0
No data :(

Я проверил некоторые примеры C , и инструкция подготовки выглядит нормально.

Так что же я увольняю? Почему он возвращает 0 строк, если db содержит данные?

c,sqlite,sqlite3,

0

Ответов: 1


1 принят

В документации говорится:

Интерфейс sqlite3_data_count (P) возвращает количество столбцов в текущей строке набора результатов подготовленного оператора P. Если подготовленный оператор P не имеет результатов, готовых к возврату, то sqlite3_data_count (P) возвращает 0.

Нет текущей строки; утверждение не имеет готовых результатов, потому что вы никогда его не выполнили (с sqlite3_step () ).

с, SQLite, sqlite3,
Похожие вопросы