如何使用 libpqxx 检查列类型?

How to check column type using libpqxx?

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

SELECT * FROM table1

执行该语句我得到结果记录,我可以遍历它。

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

如果我知道 row 中第一个元素的 type 是什么,假设它是 int,我可以得到值:

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

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

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

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

select typname, oid from pg_type;

在 psql.This 中列出了所有可用的类型。

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

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

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