我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C++ 通过pqxxlib库链接 PostgreSql数据库的详细过程

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C++ 通过pqxxlib库链接 PostgreSql数据库的详细过程

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文件,修改PGSQLclass="lazy" data-src的值为PostgreSql安装的根目录(安装路径),比如我的电脑按默认安装是 D:\Program Files\PostgreSQL\14 , 修改为如下内容:

(3)修改include相关配置

#LIBPQINC=$(PGSQLclass="lazy" data-src)\interfaces\libpq
LIBPQINC=$(PGSQLclass="lazy" data-src)\include

(4)修改Release相关配置

#LIBPQPATH=$(PGSQLclass="lazy" data-src)\interfaces\libpq\Release
#LIBPQDLL=libpq.dll
#LIBPQLIB=libpqdll.lib

LIBPQPATH=$(PGSQLclass="lazy" data-src)\lib
LIBPQDLL=libpq.dll
LIBPQLIB=libpq.lib

(5)修改Debug相关配置

#LIBPQDPATH=$(PGSQLclass="lazy" data-src)\interfaces\libpq\Debug
#LIBPQDDLL=libpqd.dll
#LIBPQDLIB=libpqddll.lib

LIBPQDPATH=$(PGSQLclass="lazy" data-src)\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

4.在VC++工程的源文件中包含libpqxx的头文件

#include <pqxx/pqxx>

三. 编译pqxx(新版本)

需要用到的软件和源码

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

步骤如下:

  • 安装CMake-gui;
  • 下载libpqxx
git clone -b 7.4.1 https://github.com/jtv/libpqxx.git

使用cmake 编译 libpqxx, 版本为: Visual Studio 2019 x64 Release

修改为下面图片,只保留了Release,也可以编译Debug,我是分开来编译的

最后build文件夹内容如下:

运行 Visual Studio 2019 打开build下面的libpqxx.sln工程

修改为下面的配置:最新的语言标准.
修改pqxxALL_BUILD的属性为

Make ALL_BUILD 在 INSTALL builds. Libpqxx must be installed in C:\Program Files\libpqxx

编译好的文件

编译好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;

代码如下:

#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;
}

    运行

    把程序放到其他电脑上运行,需要用到的依赖文件有,可以到Postgresql安装目录下面找;

    如果在其他电脑运行时出现如下的情况,看不到错误提示:

    在资源管理器中选项里面把隐藏的东西都给取消掉,重启,就能看到错误提示了

    到此这篇关于C++ 通过pqxxlib库链接 PostgreSql数据库的文章就介绍到这了,更多相关C++ PostgreSql数据库内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    C++ 通过pqxxlib库链接 PostgreSql数据库的详细过程

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    C++ 通过pqxxlib库链接 PostgreSql数据库的详细过程

    这篇文章主要介绍了C++ 通过pqxxlib库链接 PostgreSql数据库,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-14

    QT连接MYSQL数据库的详细过程

    这篇文章主要介绍“QT连接MYSQL数据库的详细过程”,在日常操作中,相信很多人在QT连接MYSQL数据库的详细过程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”QT连接MYSQL数据库的详细过程”的疑惑有所
    2023-06-20

    Java通过数据库表生成实体类详细过程

    这篇文章主要介绍了Java通过数据库表生成实体类,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-02-07

    通过Java连接SQL Server数据库的超详细操作流程

    java相对于其他语言(例如c,c++等)连接数据库要方便得多,那么如何连接呢?下面这篇文章主要给大家介绍了关于通过Java连接SQL Server数据库的超详细操作流程,需要的朋友可以参考下
    2023-03-06

    VisualStudio 制作Dynamic Link Library动态链接库文件的详细过程

    这篇文章主要介绍了VisualStudio 制作Dynamic Link Library动态链接库文件的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-11-13

    通过yum方式安装mySql数据库的全过程

    目录Yum方式安装mysql服务修改密码:总结Yum方式安装mysql服务步骤一:首先下载mysql的yum源配置wget http://dev.mysql.com/get/mysql57-com编程客栈munity-release-el
    2022-07-29

    面向过程式的数据库连接

    1、mysql系列函数   --连接mysql的老函数,性能不佳,已经被mysqli替代 2、mysqli系列函数  --mysql系列的增强版,如果直接连接mysql数据库,性能最好 3、pdo抽象层  --抽象的数据库连接方法,它实现了一套代码,适配各种数
    面向过程式的数据库连接
    2021-04-06

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录