如何使用libpqxx检查列类型?

时间:2015-08-21 08:30:20

标签: c++ postgresql libpqxx

我在我的项目中使用libpqxx。该项目是特定的,因为我不知道将执行什么SQL语句。让我们说用户输入声明:

SELECT * FROM table1

执行该语句我得到了结果记录,我可以通过它进行迭代。

for( auto row = myresult.begin(); row != myresult.end(); ++row)
{
    //Here I can access row elements.
}

如果我知道type中第一个元素的row是什么,让我们说它是int,我可以获得价值:

int firstElement = row[0].as<int>();

但我不知道。方法type()(我可以在行元素上调用它)它return类型oid(它是某种列标识符)它是数值,但我不知道如何使用该值来获取行元素的类型。我的问题是:

是否有一些枚举或其他方法可以使用此oid获取行元素type

1 个答案:

答案 0 :(得分:2)

Oid是postgres的内部。不是libpqxx。 只需输入

即可
select typname, oid from pg_type;
psq中的

。这列出了所有可用的类型。

如果要使用源文件中的类型,请获取postgres源代码。 http://doxygen.postgresql.org/include_2catalog_2pg__type_8h_source.html

只需看看这个配置就可以了解一下。忽略类型名称中的T_(一个下划线)。

https://github.com/olt/libpq/blob/master/oid/types.go