• 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"
    
    int
    main(int argc, char **argv)
    {
            const char *conninfo; //定义连接信息
            PGconn     *conn; //连接数据库传递参数
            if (argc > 1)
                    conninfo = argv[1];
            else
                    conninfo = "dbname = postgres";
    
            /* 连接数据库字符串 */
            conn = PQconnectdb(conninfo);
    
            /*检查数据库是否连接成功 */
            if (PQstatus(conn) != CONNECTION_OK)
            {
                    fprintf(stderr, "连接数据库失败: %s",
                                    PQerrorMessage(conn));
            }else
            {
                    printf("数据库名称: %s
    ",PQdb(conn));
                    printf("数据库用户名称: %s
    ",PQuser(conn));
                    printf("数据库用户密码: %s
    ",PQpass(conn));
                    printf("数据库端口: %s
    ",PQport(conn));
                    printf("数据库主机名: %s
    ",PQhost(conn));
                    printf("数据库IP地址: %s
    ",PQhostaddr(conn));
            }
    
            return 0;
    }
    

      编译:

    [postgres@pgserver12 libpqtest]$ make
    make -C ../postgresql-12.5/src/backend generated-headers
    make[1]: Entering directory `/home/postgres/postgresql-12.5/src/backend'
    make -C catalog distprep generated-header-symlinks
    make[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-symlinks
    make[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.c
    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 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地址的形式出现,如上。

  • 相关阅读:
    volatile 关键字,你真的理解吗?
    kafka如何彻底删除topic及数据
    CentOS7 安装letsencrypt
    Qunar风控安全产品的探索之路
    乐观锁的实际应用
    前端打包报错内存溢出
    Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't load library: /usr/lib/jvm/java11openjdkamd64/lib/libawt_xawt.so
    GitHud加速工具 devsidecar 安装
    linux系统命令行或shell里面设置终端title标题(适用与ubuntu,centos)[转]
    Sublime 搜索显示<binary>
  • 原文地址:https://www.cnblogs.com/sandata/p/14252699.html
Copyright © 2020-2023  润新知