gpt4 book ai didi

c - 从 Postgresql 数据库检索图像文件返回两倍大的插入数据(通过 libpq 库)

转载 作者:行者123 更新时间:2023-11-30 14:20:27 25 4
gpt4 key购买 nike

我正在使用 Postgresql 数据库的 libpq 库,并且在从数据库检索 bytea 数据时遇到问题。我无法解决我的问题,所以想请教你。每当我尝试将图像文件插入数据库并将其返回时,返回数据的大小始终是我发送的数据的2倍。实际上,确切的等式是:检索到的数据 = 发送的数据 * 2 + 2(以字节为单位)。所以,我还无法弄清楚,我可能错过了一些东西:/

我使用的示例代码如下:

PGresult*    res;
const char* paramValues[1] = {plateImageArray.data()}; // data type is const char*
int paramLengths[1] = {plateImageArray.size()}; // size of image is 58573 bytes
int paramFormats[1] = {1}; // 1 for byte, 0 for text

res = PQexecParams(conn,
"INSERT INTO \"plates\" (plateImage) VALUES ($1::bytea)",
1, /* param number */
NULL, /* param type */
paramValues, /* param values*/
paramLengths, /* param lengths */
paramFormats, /* default to all text params */
1); /* return type, 1 for text. */

res = PQexec(conn,"Select * from \"plate_images\" WHERE ...."); /*returns 1 tuple : something / something / image(bytea) */

int lengthOfPlateImage=PQgetlength(res,0,2); // indicates 117148 bytes, exactly 2 times of sent data +2

如果你们能帮助我,我很感激。我厌倦了寻找其原因。

提前致谢。

编辑:我跟踪了磁盘中存储的数据,插入数据的大小是相同的(58573字节)。获取数据时会变成两倍大的数据......

最佳答案

好的,使用“PQexec”命令进行的查询返回文本格式的值,并且它没有参数来告诉您是否想要文本格式或字节格式的结果。我不确定是否存在更好、更合适的命令来查询它,但我使用了“PQexecParams”并设置返回类型 1(1 表示字节,0 表示文本),它返回了具有预期大小的确切数据。不管怎样,谢谢。

关于c - 从 Postgresql 数据库检索图像文件返回两倍大的插入数据(通过 libpq 库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15448596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com