gpt4 book ai didi

c - 如果数据库包含数据,为什么 sqlite3_data_count() 返回 0?

转载 作者:行者123 更新时间:2023-11-30 15:05:04 29 4
gpt4 key购买 nike

我有一个包含以下数据的 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\n", 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.\n", iret);
return EXIT_FAILURE;
}

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

if (ncolumns == 0) {
printf("No data :(\n");
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 :(

我检查过some C examples ,并且准备语句看起来没问题。

那么我要拒绝什么?如果数据库包含数据,为什么它返回 0 行?

最佳答案

documentation说:

The sqlite3_data_count(P) interface returns the number of columns in the current row of the result set of prepared statement P. If prepared statement P does not have results ready to return … then sqlite3_data_count(P) returns 0.

当前没有行;该语句没有准备好返回的结果,因为您从未执行过它(使用 sqlite3_step() )。

关于c - 如果数据库包含数据,为什么 sqlite3_data_count() 返回 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40015247/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com