gpt4 book ai didi

c++ - 使用来自远程计算机的 libpq 在 PostgreSQL 中插入二进制大对象 (BLOB)

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:58:19 26 4
gpt4 key购买 nike

你能举一个使用 libpq 从远程机器向 PostgreSQL 数据库插入二进制数据的例子吗?我的第二个问题是:是否有任何其他 API 比使用 C++ 的 libpq 更有效。谢谢

最佳答案

PostgreSQL 中有两种 blobBYTEALarge Objects。我建议不要使用大对象,因为您无法将它们连接到表中。

对于 BYTEA,你会在 libpq 中使用这样的东西:

PGresult* put_data_to_tablename(
PGconn* conn,
int32_t id,
int data_size,
const char* const data
) {
PGresult* result;
const uint32_t id_big_endian = htonl((uint32_t)id);
const char* const paramValues[] = { &id_big_endian, data };
const int nParams = sizeof(paramValues) / sizeof(paramValues[0]);
const int paramLenghts[] = { sizeof(id_big_endian), data_size };
const int paramFormats[] = { 1, 1 }; /* binary */
const int resultFormat = 0; /* text */

result = PQexecParams(
conn,
"insert into tablename (id, data) values ($1::integer, $2::bytea)",
nParams,
NULL, /* Types of parameters, unused as casts will define types */
paramValues,
paramLenghts,
paramFormats,
resultFormat
);
return result;
}

关于c++ - 使用来自远程计算机的 libpq 在 PostgreSQL 中插入二进制大对象 (BLOB),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8994702/

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