gpt4 book ai didi

c - SQLite C API,可以打开数据库但不使用查询返回任何数据吗?

转载 作者:太空宇宙 更新时间:2023-11-04 04:05:32 25 4
gpt4 key购买 nike

我正在尝试使用 SQLite 的 C API 打开数据库并访问一些记录。它似乎可以很好地打开数据库,但在尝试查询时我没有得到任何结果(返回 0 行)。相同的查询适用于 sqlite3 CLI 和其他 sqlite 应用程序/前端。我使用 [http://www.sqlite.org/cintro.html] 作为引用。

我的代码几乎就是两个函数调用。程序输出为:

“打开的数据库”

“行数 = 0”。

我在这里没有做任何复杂的事情,所以我希望我只是在某个地方犯了一个我看不到的简单错误。如果有任何帮助,我将不胜感激。

-kf

int main()
{
// declare some vars
sqlite3* db_handle;
char sql[2048]; // for commands,queries and such
char* err_msg;
char** results;
int rows, columns;

// connect to database file
if (!(sqlite3_open_v2("../../Downloads/maps/ontario.sql", &db_handle, SQLITE_OPEN_READONLY, NULL)))
{
std::cerr << "Could not connect to DB" << std::endl;
std::cerr << "Error: " << sqlite3_errmsg(db_handle);
sqlite3_close(db_handle);
return -1;
}
else
{ std::cerr << "Opened DB" << std::endl; }

// try sending query
strcpy(sql, "SELECT * FROM osm_node_tags LIMIT 10");
if(!(sqlite3_get_table(db_handle, sql, &results, &rows, &columns, &err_msg)))
{
std::cerr << "Error: " << sqlite3_errmsg(db_handle);
sqlite3_close(db_handle);
return -1;
}
else
{
std::cerr << "number of rows = " << rows;

for (int i=1; i <= rows; i++)
{ std::cerr << results[(i * columns) + 0] << std::endl; }
}


return 1;
}

最佳答案

http://ray.bsdart.org/man/sqlite/c3ref/open.html

sqlite3_open_v2 在成功时返回 SQLITE_OK(为零)。我认为你的条件是颠倒的。

关于c - SQLite C API,可以打开数据库但不使用查询返回任何数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6482086/

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