c - 使用libpq库从PostgreSQL的查询结果中获取(integer[])数组值

标签 c postgresql libpq

执行查询后,我运行下面的函数,但不知道如何将值转换为 c 整数数组。

如何从 pptRawValue 获取整数数组,其中 COLUMN_VALUE_IN_BINARY_FORMAT 当我查看内存时,我可以看到该值存在于 pptRawValue 中,但无法在 C 代码中的整数数组中获取该值?

请帮忙。

long lColumnNum = PQfnumber(ptQueryRes, pstrColumnName);
long lFormat = PQfformat(ptQueryRes, lColumnNum);
*pptRawValue = PQgetvalue(ptQueryRes, lRowNum, lColumnNum);
*plValueLength = PQgetlength(ptQueryRes, lRowNum, lColumnNum);
int iarray[];

最佳答案

您可以请求文本模式输出,然后 integer[] 看起来像 {1,2,42},或者您可以请求二进制模式,但然后您必须处理 PostgreSQL 服务器的内部数组表示。

关于integer[]的二进制模式:

Integers themselves are represented in network byte order ,所以字节序应该不是问题。

您必须阅读 PostgreSQL 源代码才能了解 ArrayType 的结构。

如果客户端和服务器具有不同的体系结构,则二进制更多可能会出现问题,因为对齐方式可能不同。

关于c - 使用libpq库从PostgreSQL的查询结果中获取(integer[])数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47774403/

相关文章:

c - 如何从 http 响应中拆分 binary/post-data/html?

c - Julia:Ptr{Void} 终结器错误

ruby-on-rails - libpq native 扩展在 ruby​​ on rails 上崩溃

postgresql - 如何使用 libpq 的 pgpass 连接到 postgresql,而不指定纯文本密码?

c - 括号平衡器程序

c - Linux C getopt 在第一个未指定的参数之后忽略

ruby-on-rails - 在 Rails 中排序 : SQLite vs PostgreSQL

postgresql - Elixir Ecto - PostgreSQL jsonb 函数

c - else 之前缺少语句

sql - 从余额行递归减去存款