C++ 通过pqxxlib库链接 PostgreSql数据库

一. 编译pqxx(老版本)

1. libpqxx简介

libpqxx是官方发布基于C++语言操作PostgreSQL的API库,简单地讲就是用C++来操作PostgreSQL数据库。

2. 编译环境搭建

2.1 PostgreSql下载安装

我安装PostgreSql路径为D:\Program Files\PostgreSQL\14, 安装路径最好没有空格,空格会使后面修改配置文件有点麻烦;要使用Dos格式的路径,在这里我都花了些时间

2.2 libpqxx下载

直接从github下载libpqxx,我们使用的libpqxx6.4.7,下载命令如下:

git clone --branch 6.4.7 https://github.com/jtv/libpqxx.git

2.3 编译前的准备

修改配置文件

(1)下载下来的libpqxx压缩包,在文件夹win32中common-sample,复制一份命名为common;
(2)使用记事本打开common文件,修改PGSQLSRC的值为PostgreSql安装的根目录(安装路径),比如我的电脑按默认安装是 D:\Program Files\PostgreSQL\14 , 修改为如下内容:
在这里插入图片描述
(3)修改include相关配置

#LIBPQINC=$(PGSQLSRC)\interfaces\libpq
LIBPQINC=$(PGSQLSRC)\include

(4)修改Release相关配置

#LIBPQPATH=$(PGSQLSRC)\interfaces\libpq\Release
#LIBPQDLL=libpq.dll
#LIBPQLIB=libpqdll.lib

LIBPQPATH=$(PGSQLSRC)\lib
LIBPQDLL=libpq.dll
LIBPQLIB=libpq.lib

(5)修改Debug相关配置

#LIBPQDPATH=$(PGSQLSRC)\interfaces\libpq\Debug
#LIBPQDDLL=libpqd.dll
#LIBPQDLIB=libpqddll.lib

LIBPQDPATH=$(PGSQLSRC)\lib
LIBPQDDLL=libpq.dll
LIBPQDLIB=libpq.lib
头文件拷贝

libpqxx\config\sample-headers\compiler\VisualStudio2013\pqxx\目录下的所有头文件拷贝到libpqxx\include\pqxx目录下; 这里不管你安装的是vs 2017还是2019;都能成功

3. 编译

(1)系统中查找nmake.exe,拷贝下这个位置,我机器位置:D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64\nmake.exe
(2)开始菜单,选择对应的vs2019命令行并系统管理员身份运行
在这里插入图片描述
(3)cd进入到libpgxx根目录下

f:
cd temp\libpqxx\

在这里插入图片描述
(4)执行编译命令格式

"D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64\nmake.exe" /f  win32/vc-libpqxx.mak ALL.

(5)编译成功后会产生一个lib目录,里面保存着静态链接库的debug/release及动态链接库的debug/release文件。
在这里插入图片描述

二. 配置vc项目

Visual Studio的配置

  1. 在VS的工程属性配置对话框中展开“VC++目录”项。在“包含目录”子项添加libpqxx根目录下的include目录,在“库目录”子项添加libpqxx根目录下的lib目录。
    在这里插入图片描述
    在这里插入图片描述
    除了使用上述的绝对路径以外,也可以通过环境变量进行设置,后者的方法较为灵活。方法是新建一环境变量“libpqxx”,变量值为libpqxx的根目录,如下图。然后就可以在上述的设置中用$(libpqxx)来表示这一路径了。
    在这里插入图片描述
  2. 在VS的工程属性配置对话框中配置“链接器->输入->附加依赖项”项,添加静态库,注意需针对Debug版本及Release版本分别添加。Debug版本添加的库为libpqxxD.lib和libpq.lib;Release版本添加的库为libpqxx.lib和libpq.lib。
    在这里插入图片描述
    在这里插入图片描述
  3. 将以下dll文件拷贝至工程的编译输出目录,以供程序调用。
    libpqxx根目录的lib文件夹下的:
    libpq.dll
    libpqxx.dll
    libpqxxD.dll

PostgreSQL安装目录的bin文件夹下的:
libcrypto-1_1.dll
libiconv-2.dll
libintl-8.dll
libssl-1_1.dll

  1. 在VC++工程的源文件中包含libpqxx的头文件
#include <pqxx/pqxx>

三. 编译pqxx(新版本)

需要用到的软件和源码

  1. CMake (cmake-gui), 下载最新和自己系统匹配的
  2. libpqxx

步骤如下:

  1. 安装CMake-gui;
  2. 下载libpqxx
git clone -b 7.4.1 https://github.com/jtv/libpqxx.git
  1. 使用cmake 编译 libpqxx, 版本为: Visual Studio 2019 x64 Release
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    修改为下面图片,只保留了Release,也可以编译Debug,我是分开来编译的
    在这里插入图片描述
    最后build文件夹内容如下:
    在这里插入图片描述

  2. 运行 Visual Studio 2019 打开build下面的libpqxx.sln工程
    在这里插入图片描述

  3. 修改为下面的配置:最新的语言标准.
    修改pqxxALL_BUILD的属性为
    在这里插入图片描述
    在这里插入图片描述

  4. Make ALL_BUILD 在 INSTALL builds. Libpqxx must be installed in C:\Program Files\libpqxx
    在这里插入图片描述
    编译好的文件
    在这里插入图片描述

  5. 编译好libpqxx, 哪我们就来使用它了,创建一个工程, 配置:附加包含目录为:C:\Program Files\libpqxx\include; 附加库目录有2个:C:\Program Files\libpqxx\lib,D:\Program Files\PostgreSQL\14\lib;附加依赖项:libpq.lib;pqxx.lib;ws2_32.lib;wsock32.lib;
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  6. 代码如下:

#pragma once
#include <string>
#include <iostream>
#include <pqxx/pqxx>

int main()
{
    std::string connectionString = "dbname=db_test user=admin password=123456 hostaddr=ip port=5433";
    try
    {
        pqxx::connection connectionObject(connectionString.c_str());

        pqxx::work worker(connectionObject);

        pqxx::result response = worker.exec("SELECT * FROM zd_users");

        for (size_t i = 0; i < response.size(); i++)
        {
            std::cout << "Id: " << response[i][0] << " Username: " << response[i][1] << " Password: " << response[i][2] << " Email: " << response[i][3] << std::endl;
        }

    }
    catch (const std::exception& e)
    {
        std::cerr << e.what() << std::endl;
    }

    system("pause");
    return 0;
}
  1. 运行
    在这里插入图片描述
  2. 把程序放到其他电脑上运行,需要用到的依赖文件有,可以到Postgresql安装目录下面找;
    在这里插入图片描述
  3. 如果在其他电脑运行时出现如下的情况,看不到错误提示:
    在这里插入图片描述
    在资源管理器中选项里面把隐藏的东西都给取消掉,重启,就能看到错误提示了

在这里插入图片描述
在这里插入图片描述

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

book_longker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值