如何使用 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_(一个下划线)。
我在我的项目中使用 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_(一个下划线)。