c++ - 如何使用 libpqxx 检查列类型?

标签 c++ postgresql libpqxx

我在我的项目中使用libpqxx。项目比较具体,因为不知道会执行什么SQL语句。假设用户输入语句:

从表1中选择*

执行该语句我会得到结果记录,并且可以对其进行迭代。

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() (我可以在行元素上调用它),它 返回 类型 oid (它是某种列标识符)它是数值,但我不知道如何使用该值来获取行元素的类型。我的问题是:

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

最佳答案

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

select typname, oid from pg_type;

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

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

只需在 go 中查看此配置即可获得清晰的外观。忽略类型名称中的 T_(一个下划线)。

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

关于c++ - 如何使用 libpqxx 检查列类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32135752/

相关文章:

c++ - 更改 std::map 的排序模式

performance - PostgreSQL查询速度是可变的

c++ - 如何使用 libpqxx API 同时插入数据? (PostgreSQL,线程)

c++ - 编译 libpqxx 代码示例时出错?

c++ - 生产者消费者问题中的设计问题

c++ - gotoxy() 函数在 Visual Studio 中不起作用

postgresql - Odoo 与 Google App Engine NDB |从 postgresql 移植到 NDB

postgresql - 无法使用 postgresql 数据库运行 web2py 调度程序

c++ - 如何检查几个小时后连接是否仍然有效?

c++ - 调用重载的 to_string 不明确