postgresql从入门到菜鸟(六)libpq连接postgres数据库

上一期讲了一些如何通过jdbc连接postgresql数据库,这一期准备说一说如何通过libpq连接postgresql数据库。
上一期的jdbc是postgresql的java语言应用程序接口,这一期的libpq对应的是postgresql的C语言应用程序接口。

这里依旧分为三个模块来讲:
一.获取连接
二.执行select语句
三.执行insert,delete,update语句

第一部分:获取连接
要使用libpq连接postgresql数据库首先要引用libpq的头文件libpq-fe.h

然后创建连接字符串和PGconn结构体,设定连接字符串后就可以通过连接字符串获取连接了

const char *conninfo;
PGconn     *conn;
conninfo = "host=127.0.0.1 port=5433 dbname=smoondb user=postgres";
conn = PQconnectdb(conninfo);

注意如果这里缺省连接关键字的话,libpq将使用缺省关键字的默认值进行连接,连接关键字的默认值可以参考官方手册。

在jdbc中,我们可以通过try catch的方式进行连接错误捕获,在libpq中也提供了判断连接是否成功建立的接口:

 if (PQstatus(conn) != CONNECTION_OK)
 {
        fprintf(stderr, "Connection to database failed: %s",
                PQerrorMessage(conn));
        exit_nicely(conn);//关闭连接并执行清理操作
 }

这里如果连接不成功的话会返回服务端返回的错误message,如果成功的话后面就可以通过conn操作数据库了。

第二部分:执行select语句
在获取到PGconn实例后,我们就可利用PGconn实例进行对数据库的操作了,和jdbc不同,jdbc中查询语句和更新

### 如何使用 C 语言通过 libpq 连接 PostgreSQL 数据库 为了实现这一目标,可以利用 `libpq` 库来编写程序。下面是一个简单的例子展示如何创建到 PostgreSQL连接并执行查询。 #### 创建连接和执行简单查询的示例代码 ```c #include <stdio.h> #include <stdlib.h> #include <libpq-fe.h> int main(int argc, char **argv) { const char *conninfo; PGconn *conn; /* Name of database to connect to */ conninfo = "dbname=testdb user=testuser password=mypass hostaddr=127.0.0.1 port=5432"; /* Make a connection to the database */ conn = PQconnectdb(conninfo); /* Check to see that the backend connection was successfully made */ if (PQstatus(conn) != CONNECTION_OK) { fprintf(stderr, "Connection to database failed: %s", PQerrorMessage(conn)); PQfinish(conn); exit(1); } printf("Successfully connected!\n"); /* Perform operations here */ /* Close the connection to the database */ PQfinish(conn); } ``` 这段代码展示了怎样建立一个到名为 `testdb` 的数据库实例的安全连接[^1]。这里指定了用户名 (`testuser`) 和密码 (`mypass`) 来验证身份,并设定了主机地址为本地机器上的默认端口 5432。如果连接失败,则会打印错误消息;成功的话则继续后续操作,在完成所有工作之后关闭连接。 对于编译此应用程序而言,确保链接器能够找到 `libpq` 库是非常重要的。通常情况下可以通过指定 `-lpq` 参数给 GCC 或者其他支持 POSIX 标准命令行选项的 C 编译器来做到这一点: ```bash gcc -o myprogram myprogram.c -I/usr/include/postgresql -L/usr/lib/x86_64-linux-gnu/ -lpq ``` 上述命令假设头文件位于 `/usr/include/postgresql` 路径下而共享对象文件存在于标准位置 `/usr/lib/x86_64-linux-gnu/` 中。根据实际情况调整路径可能有必要。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值