我用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));
有谁知道这是什么问题?如果你喜欢我发布更多代码,请说出来。我只发布了这个,因为我认为这是唯一相关的部分。
由于
答案 0 :(得分:1)
PQgetvalue()
的返回值是字符串。然后,您可以使用类似strtoll()
的内容将它们转换为整数类型。