PostgreSQL 18 中文参考文档(未翻译部分保留英文)🌐 切换到英文原版 →

33.5. 示例程序 #

官方源码分发包在 src/test/examples/testlo64.c 中提供了基于 C 语言 libpq API 操作 64 位大对象的完整端到端示例程序,演示了如何创建、按偏移量寻道写入并安全读取大对象。

Example 33.1. libpq 中大对象操作完整示例

/* 使用 libpq 操作大对象的标准流程示例 */
#include "libpq-fe.h"
#include "libpq/libpq-fs.h"

void demo(PGconn *conn) {
    Oid lobjId;
    int lobj_fd;
    char buf[1024];

    /* 大对象操作必须在显式事务块内部执行 */
    PQexec(conn, "BEGIN");
    lobjId = lo_creat(conn, INV_READ | INV_WRITE);
    lobj_fd = lo_open(conn, lobjId, INV_WRITE);
    lo_write(conn, lobj_fd, "Hello PostgreSQL", 16);
    lo_close(conn, lobj_fd);
    PQexec(conn, "COMMIT");
}