Libpq 接口
Libpq 是应用程序员使用瀚高数据库的 C 接口。Libpq 由相关库函数组成是一个库函数的集合,它们允许客户端程序传递查询给瀚高数据库后端服务器并且接收这些查询的结果。同时,Libpq 也是很多其他瀚高数据库应用接口的底层引擎,包括为 C++、Perl、Python、Tcl和 ECPG 编写的接口。
调用Libpq 库,同JAVA使用JDBC原理效果一样。
Libpq 可做三件事:与数据库建立连接、发送 操作数据库的语句并处理结果。
注意:使用 Libpq 的客户端程序必须包括头文件 libpq-fe.h 并必须与 libpq 库链接在一起。****
常用函数
函数名称 | 功能说明 |
---|---|
PQconnectdb | 创建一个数据库连接 |
PGresult | 封装查询的结果 |
PQexec | 提交了一个sql命令到服务器然后等待结果 |
PQresultStatus | 返回该命令的结果状态。PGRES_COMMAND_OK一个不返回数据的命令成功完成。 PGRES_TUPLES_OK 一个返回数据的命令(例如 SELECT 或者 SHOW)成功完成 |
PQntuples | 返回查询结果中的行(元组)数 |
PQnfields | 返回查询结果中每一行的列(域)数 |
PQgetvalue | 返回一个 PGresult 的一行的单一域值 |
PQclear | 释放与一个 PGresult 相关的存储。每一个命令结果不再需要时应该用 PQclear 释放 |
下面详细介绍 Libpq 数据库连接,以windows环境、HGDB安全版V4.5.7为例。
开发环境搭建
软件 | 版本 |
---|---|
HGDB | 安全版V4、企业版v5及以上版本 |
IDE | Qt Creator 4.10.1(Qt 5.13.2) |
前提准备
(1)在项目工程目录下,新建文件夹hgsql(存放头文件及链接库):
(2)打开瀚高数据库安装目录,将include和lib目录复制到工程目录下新建的hgsql文件夹下:
(3)打开Libpq_Demo.pro文件,添加包含路径和静态链接库:
示例代码
main.cpp
#include <QCoreApplication> |
执行结果:
注意事项
1、配置了LIBS
后提示:LINK : fatal error LNK1104: 无法打开文件“xxx.lib”
,解决方案如下:
- 根据官方文档,看下路径是否正确,如下:
1. unix写法比较通用,需要用-l
标识库名称,-L
标识库路径,在windows下,路径要用绝对路径
,这个地方比较关键。
2. 如果路径中有空格的话就用双引号包起来。
针对于上面第一点,如果不想用绝对路径的话,用相对路径可以采用系统变量的方式,如下所示:
LIBS += $$PWD/lib/xxx.lib //$$PWD当前工程目录
2、配置了LIBS
后提示:cannoe find /opt/HighGo4.5.7-see/lib:File format not recognized
,解决方案如下:
发生场景:在linux环境上配置.pro文件
运行时提示如下错误
原因是QT无法识别lib目录下的部分lib库文件格式,可以使用“ll”或者“ls -al”命令查看文件的指向类型
从图中可以看出libpq.so.5.12是libpq.so和libpq.so.5的软连接
所以libpq.so.5.12是非.so文件,所以QT在加载lib目录时会把目录下的所有文件当成lib文件,不会以后缀名。
如果不想删除软连接,可以直接在.pro文件里把.so文件路径给出来就可以了
LIBS += /opt/HighGo4.5.7-see/lib/libpg.so.5 |