C++ sqlite:如何获取所选列的列id?
鉴于:C++ sqlite:如何获取所选列的列id?,c++,sqlite,C++,Sqlite,鉴于: 具有表T 表T包含10列-C0,C1C9 对应于从T中选择C3、C2的sqlite3\u stmt指针 好的,我可以使用sqlite3\u column\u XXX方法家族()获取所选列值,如下所示: sqlite3_stmt *s; sqlite3_prepare_v2(db, query, sizeof(query), &s, NULL); while ((result = sqlite3_step(s)) == SQLITE_ROW) { const char *v
- 具有表
T
- 表
包含10列-T
,C0
<代码>C9C1
- 对应于
从T中选择C3、C2的
指针sqlite3\u stmt
sqlite3\u column\u XXX
方法家族()获取所选列值,如下所示:
sqlite3_stmt *s;
sqlite3_prepare_v2(db, query, sizeof(query), &s, NULL);
while ((result = sqlite3_step(s)) == SQLITE_ROW)
{
const char *v3 = reinterpret_cast<const char *>(sqlite3_column_text(s, 0);
const char *v2 = reinterpret_cast<const char *>(sqlite3_column_text(s, 1);
}
sqlite3\u stmt*s;
sqlite3\u prepare\u v2(数据库、查询、sizeof(查询)、&s、空);
而((结果=sqlite3_步骤))==SQLITE_行)
{
const char*v3=reinterpret\u cast(sqlite3\u column\u text(s,0);
const char*v2=reinterpret\u cast(sqlite3\u column\u text(s,1);
}
我需要的是所选列的实际索引,即3个用于v3
,2个用于v2
动机:我希望能够将返回的字符串值解析为真正的列类型。事实上,我的模式说c3
是datetime
,sqlite将其视为TEXT
。因此,sqlite3\u column\u类型(s,0)
返回sqlite3\u TEXT
,但是表元数据(可从pragma table_info(T)
获得)保留字符串datetime
,这是列的预期类型。知道了它,我可以将返回的字符串解析为自历元以来的相应unix时间
但是如何将查询列索引映射到表列索引:
- 查询列0->表列3
- 查询列1->表列2
谢谢。您可以使用sqlite C函数从结果stmt获取声明的列数据类型?它没有明确回答您的问题(获取原始列的索引),但这可能是实现您所需的另一种方式?您是否考虑过将此类信息嵌入到更高级别的关注点?从表栏中了解其查询foo的代码可以声明它希望从某个列中获取日期。否则,您依赖的是来自一个系统的内省,而这个系统并不是真正设计或预期的很好地支持它。