libpq-fe,无法选择INT8

时间:2011-04-13 07:36:22

标签: c postgresql select

我用C编程,我使用库libpq-dev/libpq-fe。使用此库,我连接到本地postgresql-Database。

我写了一些测试代码,它选择/插入一些东西。但我总是有一个问题: 我只能选择INT4(4 Byte Int)数值或字符串。可能是其他人,我没有尝试过每种类型。但我无法选择INT8值(8 Byte Int)。

示例:

"SELECT COUNT(*)::INT8 FROM tb_Test;"

这给了我一个INT8作为结果。我不知道我怎么能得到它?我试过这个:

long count = ntohl(*(uint64_t*)PQgetvalue(result, 0, 0));

计数始终为0。 但是如果我执行这个包含显式类型转换的select,它可以工作:

"SELECT COUNT(*)::INT4 FROM tb_Test;"

我使用此代码来获取计数:

long count = ntohl(*(uint32_t*)PQgetvalue(result, 0, 0));

有谁知道这是什么问题?如果你喜欢我发布更多代码,请说出来。我只发布了这个,因为我认为这是唯一相关的部分。

由于

1 个答案:

答案 0 :(得分:1)

PQgetvalue()的返回值是字符串。然后,您可以使用类似strtoll()的内容将它们转换为整数类型。