Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
libpq-fe,can';不要选择INT8_C_Postgresql_Select - Fatal编程技术网

libpq-fe,can';不要选择INT8

libpq-fe,can';不要选择INT8,c,postgresql,select,C,Postgresql,Select,我用C语言编程,在那里我使用库。通过这个库,我连接到一个本地postgresql数据库 我编写了一些测试代码,用于选择/插入某些内容。但我总是有一个问题: 我只能选择(4字节Int)数值或字符串。可能是别人给的,我没有试过每一种。但是我不能选择INT8值(8字节Int) 示例: "SELECT COUNT(*)::INT8 FROM tb_Test;" 这给了我一个INT8作为结果。我不知道怎样才能得到它?我试过这个: long count = ntohl(*(uint64_t*)PQgetv

我用C语言编程,在那里我使用库。通过这个库,我连接到一个本地postgresql数据库

我编写了一些测试代码,用于选择/插入某些内容。但我总是有一个问题: 我只能选择(4字节Int)数值或字符串。可能是别人给的,我没有试过每一种。但是我不能选择INT8值(8字节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));
有人知道有什么问题吗?如果你喜欢我贴更多的代码,请说出来。我只是发布了这个,因为我认为这是唯一相关的部分


谢谢PQgetvalue()的返回值是字符串。然后可以使用类似于
strtoll()
的方法将它们转换为整数类型。

这可能与
ntohl
有关,后者在
long
上运行
long
可能与
uint64\t
相同,也可能不同。对于
uint64\u t
,使用
le64toh
。这会给出相同的结果。结果值始终为0。我尝试了
long
而不是
uint64\t
,但这也不起作用。