
点击“蓝字”关注我们
PostgreSQL libpq学习指南是PostgreSQL libpq的第二部分,想看第一部分的翻到最后推荐阅读有链接~
连接状态函数
PQdb
返回连接的数据库名称
PQuser
返回连接的用户名称
PQpass
返回连接的用户密码
如果连接密码没有被提供,那么将会尝试从 password_file 文件中获取。
PQhost
返回连接的服务器主机名称
PQhostaddr
返回连接的服务器IP地址
PQport
返回连接服务器的端口
PQtty
返回连接的DEBUG 终端信息
PQoptions
返回命令行传递的参数信息
PQstatus
返回连接的状态信息
示例:
#include <stdio.h>#include <stdlib.h>#include "libpq-fe.h"intmain(int argc, char **argv){const char *conninfo; //定义连接信息PGconn *conn; //连接数据库传递参数if (argc > 1)conninfo = argv[1];elseconninfo = "dbname = postgres";/* 连接数据库字符串 */conn = PQconnectdb(conninfo);/*检查数据库是否连接成功 */if (PQstatus(conn) != CONNECTION_OK){fprintf(stderr, "连接数据库失败: %s",PQerrorMessage(conn));}else{printf("数据库名称: %s\n",PQdb(conn));printf("数据库用户名称: %s\n",PQuser(conn));printf("数据库用户密码: %s\n",PQpass(conn));printf("数据库端口: %s\n",PQport(conn));printf("数据库主机名: %s\n",PQhost(conn));printf("数据库IP地址: %s\n",PQhostaddr(conn));}return 0;}
编译:
[postgres@pgserver12 libpqtest]$ makemake -C ../postgresql-12.5/src/backend generated-headersmake[1]: Entering directory `/home/postgres/postgresql-12.5/src/backend'make -C catalog distprep generated-header-symlinksmake[2]: Entering directory `/home/postgres/postgresql-12.5/src/backend/catalog'make[2]: Nothing to be done for `distprep'.make[2]: Nothing to be done for `generated-header-symlinks'.make[2]: Leaving directory `/home/postgres/postgresql-12.5/src/backend/catalog'make -C utils distprep generated-header-symlinksmake[2]: Entering directory `/home/postgres/postgresql-12.5/src/backend/utils'make[2]: Nothing to be done for `distprep'.make[2]: Nothing to be done for `generated-header-symlinks'.make[2]: Leaving directory `/home/postgres/postgresql-12.5/src/backend/utils'make[1]: Leaving directory `/home/postgres/postgresql-12.5/src/backend'gcc -std=gnu99 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -O2 -I../postgresql-12.5/src/interfaces/libpq -I../postgresql-12.5/src/include -D_GNU_SOURCE -I/usr/include/libxml2 -c -o test.o test.cgcc -std=gnu99 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -O2 test.o -L../postgresql-12.5/src/port -L../postgresql-12.5/src/common -L../postgresql-12.5/src/common -lpgcommon -L../postgresql-12.5/src/port -lpgport -L../postgresql-12.5/src/interfaces/libpq -lpq -Wl,--as-needed -Wl,-rpath,'/data/pg12.5/lib',--enable-new-dtags -lpgcommon -lpgport -lpthread -lxslt -lxml2 -lpam -lssl -lcrypto -lz -lreadline -lrt -lcrypt -ldl -lm -o test[postgres@pgserver12 libpqtest]$
执行:
#默认连接[postgres@pgserver12 libpqtest]$ ./test数据库名称: postgres数据库用户名称: postgres数据库用户密码:数据库端口: 5532数据库主机名: tmp数据库IP地址:#指定连接字符串[postgres@pgserver12 libpqtest]$ ./test postgresql://pgserver12:5532/postgres数据库名称: postgres数据库用户名称: postgres数据库用户密码:数据库端口: 5532数据库主机名: pgserver12数据库IP地址: 10.10.20.60
这里需要注意的是 host 和 hostaddr不一样,在任何条件下,只要主机名能够通过正常的DNS解析,那么hostaddr将始终以IP地址的形式出现,如上。

推荐阅读

2021-01-07

2020-10-21


点击“阅读原文”
文章转载自晟数学院,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




