gpt4 book ai didi

c++ - 如何在 SQLite 中返回零项的 SELECT 操作期间获取列名

转载 作者:行者123 更新时间:2023-11-28 03:41:22 25 4
gpt4 key购买 nike

我在打电话

sqlite3_exec(db, "SELECT a,b,Z FROM t1 WHERE t1.id = 1", func_ptr, arg_ptr)

收集行内容和列名。我正在尝试创建一个通用的辅助函数,它将接受任何 SELECT 命令并构建一个 vector<vector<string>>第一行包含列名(其余包含行的内容)。

但是当自 func_ptr 以来没有行可显示时,这无法捕获列名仅调用一行或多行以显示。

SELECT 时,如何获取列名?返回零行?编辑:我不想通过创建表然后调用 SELECT 来创建间接级别在那张 table 上。谢谢。编辑:我只想收集 SELECT 的内容语句包含。

最佳答案

您可以使用 PRAGMA table_info(tablename);获取包含给定表的列名和类型的结果集。

像普通查询一样调用 pragma(例如,使用 sqlite3_exec)。

如果您不是自己生成的包含列选择的 SQL 语句需要此信息,则需要使用准备好的语句(无论如何您都应该这样做)。然后你可以使用 sqlite3_column_countsqlite3_column_name 来获取你想要的信息。

示例用法:

sqlite3_stmt *stmt;
rc = sqlite3_prepare_v2(db, "select a,b from t where 0=1", -1, &stmt, 0);
if( rc!=SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}

int cols = sqlite3_column_count(stmt);
fprintf(stdout, "%d columns\n", cols);
for (int i=0; i<cols; i++)
fprintf(stdout, "%d. %s\n", i, sqlite3_column_name(stmt, i));

// iterate over the results with sqlite3_step
// dispose of the statement with sqlite3_finalize

您可以调整它以将列名称存储在 std::vector 中。

关于c++ - 如何在 SQLite 中返回零项的 SELECT 操作期间获取列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9139343/

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