0
我使用的libpq PostgreSQL数据库的图书馆,我有一个关于从数据库检索数据BYTEA问题。我无法解决我的问题,所以想问你。每当我尝试将图像文件插入到数据库并将其恢复时,返回数据的大小始终是我发送数据的2倍。实际上,确切的等式是:检索数据=发送数据* 2 + 2(以字节为单位)。所以,我无法弄清楚的是,我可能失去了一些东西:/检索图像文件返回插入(由libpq库)两次大数据
我用一个例子的代码如下图所示:
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个字节)的数据。同时获得这两次大数据变成...