假设:
T
T
包含10列 - C0
,C1
... C9
。sqlite3_stmt
select C3,C2 from T
指针
好的,我可以使用sqlite3_column_XXX
系列方法(http://www.sqlite.org/capi3ref.html#sqlite3_column_blob)来获取所选列值,如下所示:
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);
}
我需要的是所选列的真实索引,即v3
为3,v2
为2。
动机:我希望能够将返回的字符串值解析为实际列类型。实际上,我的架构说c3
是datetime
,sqlite将其视为TEXT
。因此,sqlite3_column_type(s, 0)
返回SQLITE3_TEXT
,但表元数据(可从pragma table_info(T)
获得)保留字符串datetime
,这是列的预期类型。知道了,我可以将返回的字符串解析为自纪元以来的各个unix时间,例如。
但是如何将查询列索引映射到表列索引:
感谢。
答案 0 :(得分:1)
您可以使用sqlite C函数sqlite3_column_decltype
从结果stmt中获取声明的列数据类型吗?它没有具体回答你的问题(得到原始专栏的索引),但可能是实现你需要的另一种方式吗?