首先安装PostgreSQL开发包,然后使用libpq库连接数据库。通过PQconnectdb建立连接,PQexec执行SQL查询,PQgetvalue获取结果,并用PQclear和PQfinish释放资源,最后编译时链接-libpq库。

要在 C/C++ 程序中通过 libpq 访问 PostgreSQL 数据库,你需要使用 PostgreSQL 提供的 C 接口库 libpq。它允许你执行 SQL 命令、获取查询结果,并与数据库进行交互。以下是具体步骤和示例代码,帮助你在 Linux 环境下快速上手。
安装 PostgreSQL 开发包
确保系统已安装 PostgreSQL 客户端开发库,包括头文件和 libpq 动态库。
- Ubuntu/Debian: sudo apt-get install libpq-dev libpq5 postgresql-server-dev-all
- CentOS/RHEL: sudo yum install postgresql-devel 或 dnf install postgresql-devel
安装后,你可以使用 pg_config 查看 libpq 的包含路径和库路径:
pg_config --includedir pg_config --libdir
连接数据库并执行查询
使用 PQconnectdb 建立连接,检查连接状态,然后执行 SQL 查询。
立即学习“C++免费学习笔记(深入)”;
以下是一个简单的 C 示例,连接到本地 PostgreSQL 实例并查询当前时间:
#include#include #include int main() { const char *conninfo = "host=localhost port=5432 dbname=testdb user=postgres password=secret"; PGconn *conn = PQconnectdb(conninfo); if (PQstatus(conn) != CONNECTION_OK) { fprintf(stderr, "连接失败: %s", PQerrorMessage(conn)); PQfinish(conn); exit(1); } PGresult *res = PQexec(conn, "SELECT NOW()"); if (PQresultStatus(res) != PGRES_TUPLES_OK) { fprintf(stderr, "查询失败: %s", PQerrorMessage(conn)); PQclear(res); PQfinish(conn); exit(1); } printf("当前时间: %s\n", PQgetvalue(res, 0, 0)); PQclear(res); PQfinish(conn); return 0; }
编译链接 libpq
使用 gcc 编译时,需链接 libpq 库。通常加上 -lpq 即可。
编译命令示例:
gcc -o pg_test pg_test.c -lpq
运行程序:
./pg_test
输出类似:
当前时间: 2025-04-05 12:34:56.789+08
常用 libpq 函数说明
掌握几个核心函数,能应对大多数数据库操作场景。
- PQconnectdb(const char *):根据连接字符串建立数据库连接
- PQstatus(PGconn *):检查连接是否成功
- PQexec(PGconn *, const char *):执行 SQL 命令并返回结果
- PQresultStatus(PGresult *):判断查询是否成功(如 PGRES_TUPLES_OK)
- PQntuples(PGresult *):获取结果行数
- PQnfields(PGresult *):获取列数
- PQgetvalue(PGresult *, int row, int col):获取指定位置的值(字符串形式)
- PQclear(PGresult *):释放结果资源
- PQfinish(PGconn *):关闭连接
对于插入、更新等操作,同样使用 PQexec,只需检查返回状态是否为 PGRES_COMMAND_OK。
基本上就这些。只要配置好开发环境,编写代码连接 PostgreSQL 并不复杂,libpq 接口稳定且文档齐全。注意处理连接失败和内存释放,避免资源泄漏。










