QT学习笔记-QT安装postgresql驱动
创始人
2025-05-31 06:37:46

QT学习笔记-QT安装postgresql驱动

  • 0、背景
  • 1、环境以及条件说明
  • 2、编译驱动
  • 3、让QT的程序能找到编译好的驱动
  • 4、复制依赖的数据库动态库
  • 5、访问数据库运行成功

0、背景

在使用QT开发应用的过程中,往往会把应用使用过程中产生的数据放入数据库进行统一存储,因此通过QT实现数据库的访问可以说是必须的一个知识点,起始QT访问数据库的语法及相关类和方法的使用并不复杂,但是对于使用QT的新人来说往往会开在数据库驱动加载的地方,比如遇到以下问题:

QSqlDatabase: QPSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMARIADB QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7

虽然QT的驱动列表中有QPSQL,但是确保不能加载。下面就来说一下正确使用QT方法数据的驱动问题。

QT最新的安装包安装完毕后,默认支持ODBC和SQLITE数据库,要想使用其他的数据库那么你在安装QT的时候要把源码选项勾上。

1、环境以及条件说明

操作系统:windows10专业版
数据库版本:Postgresql 14.6(64位)(在编译驱动的时候需要引用这里面的库和头文件,也可以不安装直接下载压缩包解压也行)
QT版本:5.15.2,且安装的时候勾选了源码
QT编译套件:MinGW64(关于32位位与64位问题要与数据库一致)

2、编译驱动

我的Postgresql安装目录为:D:\pgsql
我的QT安装目录为:D:\Qt
对应的数据库驱动源码目录为:D:\Qt\5.15.2\Src\qtbase\src\plugins\sqldrivers
如下图:
在这里插入图片描述
1、选择对应数据库类型的源码目录:D:\Qt\5.15.2\Src\qtbase\src\plugins\sqldrivers\psql,然后进入,如下图:
在这里插入图片描述
2、用qt creator打开psql.pro工程,如下图:
在这里插入图片描述
3、选择64位的编译套件,然后点击“Configure Project”,打开工程代码如下:
在这里插入图片描述
4、鼠标右键点击工程psql,在弹出菜单中选择添加库,弹出如下对话框:
在这里插入图片描述
5、选择“外部库”,然后点击“下一步”,如下图:
在这里插入图片描述
6、点击库文件后的“浏览…”按钮,选择postgresql安装目录下的lib/libpg.lib,包含路径选择postgresql安装目录下的include,取消“为debug版本添加’d’作为后缀”的勾选,如下图:
在这里插入图片描述
7、点击“下一步”按钮,如下图:
在这里插入图片描述
8、点击“完成”按钮,查看.pro文件的变化如下:
在这里插入图片描述
9、把项目构建方式改为release,然后鼠标右键点击工程psql,在弹出菜单中选择“构建”或“重新构建”。构建完毕后,如下图:
在这里插入图片描述
10、通过分析编译输出的日志,可以分析出,驱动编译完毕生成的dll所在的目录为:D:\plugins\sqldrivers,如下图:
在这里插入图片描述
至此驱动的编译过程就结束了。

3、让QT的程序能找到编译好的驱动

qt工程在编译是默认寻找数据库驱动的路径(注意项目使用的编译套件是MinGw 64位的)是:D:\Qt\5.15.2\mingw81_64\plugins\sqldrivers,因此需要把上一步编译生成的3个文件libqsqlpsql.a、qsqlpsql.dll、qsqlpsql.dll.debug复制到D:\Qt\5.15.2\mingw81_64\plugins\sqldrivers目录下。如下图:
在这里插入图片描述

4、复制依赖的数据库动态库

1、qt对不同的数据库所依赖的dll的数量不一样,像MySql主要就是依赖1个libmysql.dll,但是对于PostgreSql 14.6依赖的dll包含:
以下为必须

  • libcrypto-1_1-x64.dll
  • libiconv-2.dll
  • libintl-9.dll
  • libpg.dll
  • libssl-1_1-x64.dll

以下2个可选

  • liblz4.dll
  • libxml2.dll

2、需要把必须的dll从postgresql安装目录下D:/pgsql/bin复制到QT项目的输出目录中,如下图:
在这里插入图片描述
3、为了避免每个QT项目都需要复制这几个dll,可以把这几个dll复制到QT编译套件的bin目录下,我的用编译套件为MinGw 64位,对应的目录为D:/Qt/5.15.2/mingw81_64/bin,如下图:
在这里插入图片描述

5、访问数据库运行成功

写一个访问postgresql数据库的demo工程,关键代码如下:

void Widget::on_btnDbTest_clicked()
{QStringList driverList = QSqlDatabase::drivers();qDebug() << driverList;QSqlDatabase  db = QSqlDatabase::addDatabase("QPSQL");db.setHostName("192.168.0.15");db.setPort(5432);db.setUserName("postgres");db.setPassword("postgres");//    QSqlDatabase  db = QSqlDatabase::addDatabase("QMYSQL");
//    db.setHostName("localhost");
//    db.setPort(3306);
//    db.setUserName("root");
//    db.setPassword("mesnac@123");if (!db.open()){qDebug() << "数据库连接失败!";QMessageBox::information(this, "提示", "失败");}else{qDebug() << "数据库连接成功!";QMessageBox::information(this, "提示", "成功");}
}

运行效果如下:
在这里插入图片描述

相关内容

热门资讯

lazada按关键字搜索商品 ... item_search-按关键字搜索商品  lazada.item_search 公共参数 请求地...
华为p10闪存怎么检测华为p ... 首先,非常感谢您对华为P10的关注。为了检测华为P10的闪存情况,您可以按照以下步骤进行操作: ...
广州哪里可以学做咖啡,广州学做... 1. 咖啡学院:专业的咖啡学院提供全面的咖啡课程,包括咖啡豆知识、咖啡制作技巧、咖啡品尝和评估等。在...
如何发现手机被监听,首先,我们... 1. 检查手机设置:确保你的手机设置中的隐私设置已经正确配置,并且只允许你信任的应用访问你的位置、通...
day13 模块和异常捕获总结 day13 模块和异常捕获 一、生成器 (一)、什么是生成器 1...
寒假文化课辅导招生宣传语有哪些... 1. 寒假来袭,文化课辅导助你一臂之力! 2. 告别寒假无聊,加入文化课辅导班,充实自己! ...
【新星计划2023】SQL S... 【新星计划2023】SQL SERVER -- 基础知识1. Introduction1.1 Off...
街边烤鸡20一只,揭秘背后的猫... 为什么农村土鸡一只卖上百块,而街上的烤鸡才20块? 难道还真是往船长的四...
微信小程序根据CODE获取用户... public function get_user_opendid() { $code = $...
漳州新车上牌流程(漳州汽车上牌... 今天给各位分享漳州新车上牌流程的知识,其中也会对漳州汽车上牌需要居住证吗进行解释,如果能碰巧解决你现...
载字的部首是哪一个 极速百科网... 载字的部首是“车”。收到你的喜欢啦收到你的喜欢啦载字的部首是哪一个汉字“载”是一个非常古老的文字,其...
常用的 IntelliJ ID... 以下是 30 个 IntelliJ IDEA 常用的快捷键: Ctrl + S...
喜可以组什么词成语,标题:喜从... 喜逐颜开、喜笑颜开、双喜临门、喜出望外、喜从天降、沾沾自满收到你的喜欢啦收到你的喜欢啦标题:喜从天降...
莫失莫忘仙寿恒昌是什么意思,标... “莫失莫忘,仙寿恒昌”是一句寓意深刻的话,可以理解为“不要忘记,就能够长久保持健康和长寿”。这句话表...
关于Docker逃逸 关于Docker逃逸 文章目录关于Docker逃逸前言一、判断是否为docker容器?...
在Centos上架设Zerot... Zerotier在国外,经常不好访问,Moon根服务也不是很好用。我们可...
超薄网络变压器(百兆千兆万兆)... Hqst华强盛:随着主板小型化,超薄型网络变压器越来越有集中的需求&#x...
思铂睿油耗有多少(思铂睿油耗多... 本篇文章极速百科给大家谈谈思铂睿油耗有多少,以及思铂睿油耗多少钱一公里对应的知识点,希望对各位有所帮...
描写冬天的好词好句 极速百科网... 好词: 银装素裹、白雪皑皑、玉树琼枝、寒风凛冽、冰天雪地、寒气逼人、雪中送炭、红炉暖阁、寒梅傲...
dnf怎么带人强开魔界深渊 极... 地下城与勇士(简称DNF)是由腾讯发行的手机游戏。该游戏是一款2D卷轴式横版格斗过关网络游戏,大量继...
高通670相当于骁龙多少 极速... 高通670相当于骁龙多少高通670处理器,这是一款颇受关注的产品,尤其在智能手机领域。作为美国高通公...
Qt实战技能 快捷键: 多行注释: 选中多行---ctrl+/ 打开文件或...
CentOS操作系统libc.... 使用xshell登陆Linux后查看jdk版本提示 /lib64/libc.so.6: versio...
@RequestMapping... 在享受了@RequestMapping方便的处理映射时,忍不住会开始好奇&#x...
配风景照的的简短文字,穿越时光... 光影交织中,我寻找着生活的诗意。每一张风景照,都是我对大自然的热爱与敬畏。愿你也能在繁忙的生活中,找...
计算机专业的就业方向是什么,计... 计算机专业的就业方向非常广泛,主要包括以下几个方面: 1. 软件开发:这是计算机专业最主要的就...
诗圣是谁(诗圣是谁诗仙又是谁)... 本篇文章极速百科给大家谈谈诗圣是谁,以及诗圣是谁诗仙又是谁对应的知识点,希望对各位有所帮助,不要忘了...
表示红的成语ABAB 极速百科... 表示红的成语ABAB有:红红火火。收到你的喜欢啦收到你的喜欢啦
labview程序结构for循... wx供重浩:创享日记 对话框发送:labview程序 获取完整无水印报告...
[数据结构高频面试题]用两个栈... 文章目录 一、栈实现队列的特点分析 1、1 具体分析 1、2 整体概括 二、用栈模拟队列代码的实现 ...