Qt安装MYSQL驱动

Qt安装MYSQL驱动

1 Qt配置MySQL驱动

在使用Qt连接数据库前需要确定当前Qt支持的数据库驱动模块有哪些。

1.1 Qt数据库驱动

Qt SQL模块是Qt提供的一个访问数据库的接口,支持多种平台下使用不同类型的数据库,在这个过程中,数据库驱动负责与不同的数据库进行通信。

1.1.1 Qt支持的数据库驱动

QDB2、QIBASE、QMYSQL、QOCI、QODBC、QPSQL、QSQLITE2、QSQLITE、QTDS

1.1.2 如何查看当前版本Qt所支持的数据库驱动

  1. 新建项目,在.pro文件中添加 QT += sql
  2. 在.cpp文件中,添加如下代码
    qDebug() << QSqlDatabase::drivers();
    
  3. 运行程序,在 应用程序输出栏 中观察结果

2 安装MYSQL驱动 – MinGW编译器

2.1 下载MYSQL

https://dev.mysql.com/downloads/mysql/

将MySQL的环境C:\Program Files\MySQL\MySQL Server 8.1\bin添加到环境变量中。

2.2 拷贝libmysql.dll和libmysql.lib文件

1)打开MySQL的安装目录下的lib文件夹,如:C:\Program Files\MySQL\MySQL Server 8.1\lib;
2)将该文件夹下的libmysql.dll和libmysql.lib文件拷贝到Qt的MinGW编译器的bin文件夹下,如:F:\QT\5.12.6\mingw73_64\bin

2.3 编译qsqlmysql.dll文件

1)需要利用QT的源码进行编译,在QT安装时需要选择 Source 来选择安装源码,此时在QT目录下可以找到 Src 文件夹;
2)进入 Qt安装目录Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql 文件夹,打开 mysql.pro 文件,进行修改;

TARGET = qsqlmysqlHEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp#QMAKE_USE += mysqlOTHER_FILES += mysql.jsonPLUGIN_CLASS_NAME = QMYSQLDriverPlugin#mysql的lib路径
LIBS += -L$$quote(C:/Program Files/MySQL/MySQL Server 8.1/lib) -llibmysql#mysql的include路径
INCLUDEPATH += $$quote(C:/Program Files/MySQL/MySQL Server 8.1/include)#mysql的include路径
DEPENDPATH += $$quote(C:/Program Files/MySQL/MySQL Server 8.1/include)include(../qsqldriverbase.pri)

2.4 构建并运行该文件

将当前编译器调整为MinGW编译器,构建.pro文件后运行,出现以下对话框即为编译成功:

如果构建过程中出现该错误:Cannot read xxx/qtsqldrivers-config.pri:No such file or directory,可不用管,直接运行。

2.5 复制qsqlmysql.dll和qsqlmysqld.dll文件

在QT的同级目录下,会出现 plugins 的文件夹,里面有刚刚编译好的库文件,将其中的qsqlmysql.dllqsqlmysqld.dll文件复制到MinGW编译器的plugins\sqldrivers目录下。

此时MYSQL驱动即安装成功,可以在项目中使用 QSqlDatabase::drivers() 查看。

2.6 参考

安装MySQL驱动详细流程

3 安装MYSQL驱动 – MSVC编译器

3.1 下载MYSQL

3.2 拷贝libmysql.dll和libmysql.lib文件

1)打开MySQL的安装目录下的lib文件夹,如:C:\Program Files\MySQL\MySQL Server 8.1\lib;
2)将该文件夹下的libmysql.dll和libmysql.lib文件拷贝到Qt的MSVC2017_64编译器的bin文件夹下,如:F:\QT\5.12.6\msvc2017_64\bin

3.3 编译qsqlmysql.dll文件

1)需要利用QT的源码进行编译,在QT安装时需要选择 Source 来选择安装源码,此时在QT目录下可以找到 Src 文件夹;
2)进入 Qt安装目录Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql 文件夹,打开 mysql.pro 文件,进行修改;

TARGET = qsqlmysqlHEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp#QMAKE_USE += mysqlOTHER_FILES += mysql.jsonPLUGIN_CLASS_NAME = QMYSQLDriverPlugin#mysql的lib路径
LIBS += -L $$quote(C:/Program Files/MySQL/MySQL Server 8.1/lib) -llibmysql#mysql的include路径
INCLUDEPATH += $$quote(C:/Program Files/MySQL/MySQL Server 8.1/include)#mysql的include路径
DEPENDPATH += $$quote(C:/Program Files/MySQL/MySQL Server 8.1/include)include(../qsqldriverbase.pri)

3.4 构建并运行该文件

将当前编译器调整为MSVC2017_64编译器,构建.pro文件后运行,出现以下对话框即为编译成功:

3.5 可能遇到的问题

Cannot read xxx/qtsqldrivers-config.pri:No such file or directory

不用管,直接运行。

msvc-version.conf loaded but QMAKE_MSC_VER isn`t set

在MSVC2017_64编译器的目录F:\QT\5.12.6\msvc2017_64\mkspecs\common下打开msvc-version.conf文件,添加:
QMAKE_MSC_VER = 1900

...
#
# Version-specific changes
#
QMAKE_MSC_VER = 1900isEmpty(QMAKE_MSC_VER): error("msvc-version.conf loaded but QMAKE_MSC_VER isn't set")MSVC_VER = 8.0
...

3.6 复制qsqlmysql.dll、qsqlmysqld.dll文件

在mysql的同级目录下会生成plugins文件,里面有刚编译好的qsql文件,即F:\QT\5.12.6\Src\qtbase\src\plugins\sqldrivers\plugins\sqldrivers 目录下的 qsqlmysql.dllqsqlmysqld.dll文件 复制到MSVC2017_64编译器的plugins\sqldrivers目录下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/644932.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mfc110.dll丢失是什么意思?全面解析mfc110.dll丢失的解决方法

在使用计算机的过程中&#xff0c;用户可能会遭遇一个常见的困扰&#xff0c;即系统提示无法找到mfc110.dll文件。这个动态链接库文件&#xff08;DLL&#xff09;是Microsoft Foundation Classes&#xff08;MFC&#xff09;库的重要组成部分&#xff0c;对于许多基于Windows的…

代码随想录刷题笔记 DAY12 | 二叉树的理论基础 | 二叉树的三种递归遍历 | 二叉树的非递归遍历 | 二叉树的广度优先搜索

Day 12 01. 二叉树的理论基础 1.1 二叉树的种类 满二叉树&#xff1a;除了叶子节点以外&#xff0c;每个节点都有两个子节点&#xff0c;整个树是被完全填满的完全二叉树&#xff1a;除了底层以外&#xff0c;其他部分是满的&#xff0c;底部可以不是满的但是必须是从左到右连…

数据结构之受限线性表

受限线性表 对于一般线性表&#xff0c;虽然必须通过遍历逐一查找再对目标位置进行增、删和查操作&#xff0c;但至少一般线性表对于可操作元素并没有限制。说到这里&#xff0c;大家应该明白了&#xff0c;所谓的受限线性表&#xff0c;就是可操作元素受到了限制。 受限线性表…

【Web前端开发基础】CSS3之Web字体、字体图标、平面转换、渐变

CSS3之Web字体、字体图标、平面转换、渐变 目录 CSS3之Web字体、字体图标、平面转换、渐变一、Web字体1.1 Web字体概述1.2 字体文件1.3 font-face 规则 二、字体图标2.1 字体图标2.2 字体图标的优点2.3 图标库2.4 下载字体包2.5 字体图标的使用步骤2.6 字体图标使用注意点2.7 上…

「 典型安全漏洞系列 」06.路径遍历(Path Traversal)详解

引言&#xff1a;什么是路径遍历&#xff1f;如何进行路径遍历攻击并规避常见防御&#xff1f;如何防止路径遍历漏洞。 1. 简介 路径遍历&#xff08;Path Traversal&#xff09;是一种安全漏洞&#xff0c;也被称为目录遍历或目录穿越、文件路径遍历。它发生在应用程序未正确…

mysql生成最近24小时整点/最近30天/最近12个月时间临时表

文章目录 生成最近24小时整点生成最近30天生成最近12个月 生成最近24小时整点 SELECT-- 每向下推1行, i比上次减去1b.*, i.*,DATE_FORMAT( DATE_SUB( NOW(), INTERVAL ( -( i : i - 1 ) ) HOUR ), %Y-%m-%d %H:00 ) AS time FROM-- 目的是生成12行数据( SELECTa FROM( SELECT…

在浏览器输入一个url,浏览器会发生什么?

文章目录 在浏览器输入一个URL后&#xff0c;浏览器会经历以下主要的步骤&#xff1a; 1、URL解析&#xff1a; 浏览器首先会解析输入的URL&#xff0c;包括协议&#xff08;比如http&#xff09;、域名、端口、路径和查询参数等。 2、DNS解析&#xff1a; 如果输入的是域名而…

创作活动(九十三)———ChatGPT 和文心一言哪个更好用?

#ChatGPT 和文心一言哪个更好用&#xff1f;# 根据提供的搜索结果&#xff0c;ChatGPT和文心一言各有特点和优势&#xff0c;选择哪一个更好用取决于具体的应用场景和个人需求。以下是两者的对比&#xff1a; ChatGPT&#xff1a; 适用场景&#xff1a;适合需要生成大量知识性…

搭建《幻兽帕鲁》服务器需要怎样配置的云服务器?

随着《幻兽帕鲁》这款游戏的日益流行&#xff0c;越来越多的玩家希望能够在自己的服务器上体验这款游戏。然而&#xff0c;搭建一个稳定、高效的游戏服务器需要仔细的规划和配置。本文将分享搭建《幻兽帕鲁》服务器所需的配置及搭建步骤&#xff0c;助力大家获得更加畅快的游戏…

搭建k8s集群实战(一)系统设置

1、架构及服务 Kubernetes作为容器集群系统&#xff0c;通过健康检查重启策略实现了Pod故障自我修复能力&#xff0c;通过调度算法实现将Pod分布式部署&#xff0c;并保持预期副本数&#xff0c;根据Node失效状态自动在其他Node拉起Pod&#xff0c;实现了应用层的高可用性。 …

树的学习day01

树的理解 树是一种递归形式的调用 树是由于多个结点组成的有限集合T 树中有且仅有一个结点称为根 当结点大于1的时候&#xff0c;往往其余的结点为m个互不相交的有限个集合T1,…,Tm&#xff0c;每个互不相交的有限集合本身右是一棵树&#xff0c;称为这个根的子树 空树也是树 关…

【Docker】Docker学习② - Docker安装及基础命令介绍

【Docker】Docker学习② - Docker安装及基础命令介绍 一、Docker简介二、Docker安装及基础命令介绍1. Docker安装验证2. Docker存储引擎3 Docker服务进程4. Docker镜像加速配置 三、Docker镜像管理四、Docker镜像与制作五、Docker数据管理六、网络部分七、Docker仓库之单机Dokc…

kafka乱序消费可能的原因和解决方案

Kafka乱序消费可能的原因有以下几个&#xff1a; 分区顺序&#xff1a;Kafka中的消息按照分区进行存储和分发&#xff0c;每个分区内的消息是有序的&#xff0c;但不同分区之间的消息顺序是无法保证的。如果消费者在多个分区上进行并行消费&#xff0c;并且不处理消息的顺序&am…

选现货白银投资划不划算?

可以肯定的是选择现货白银投资是划算的&#xff0c;但投资者需要有足够的知识和经验&#xff0c;以及对市场的敏锐观察力。只有这样&#xff0c;投资者才能在现货白银投资中获取收益。在投资市场上&#xff0c;白银作为一种特殊的投资品种&#xff0c;一直以来都备受投资者们的…

javaweb总览

javaweb需要学习哪些技术 前端web开发&#xff1a; 技术描述HTML用于构建网站的基础结构的css用于美化页面的&#xff0c;作用和化妆或者整容作用一样JavaScript实现网页和用户的交互Vue主要用于将数据填充到html页面上的Element主要提供了一些非常美观的组件Nginx一款web服务…

JUC-CAS

1. CAS概述 CAS(Compare ans swap/set) 比较并交换&#xff0c;实现并发的一种底层技术。它将预期的值和内存中的值比较&#xff0c;如果相同&#xff0c;就更新内存中的值。如果不匹配&#xff0c;一直重试&#xff08;自旋&#xff09;。Java.util.concurrent.atomic包下的原…

Redis - redis.windows.conf配置文件及RDB和AOF数据持久化方案

Redis - redis.windows.conf配置文件及RDB和AOF数据持久化方案 Redis的高性能是由于其将所有数据都存储在了内存中&#xff0c;为了使Redis在重启之后仍能保证数据不丢失&#xff0c;需要将数据从内存中同步到硬盘中&#xff0c;这一过程就是持久化。 Redis支持两种方式的持久化…

【51单片机】点亮第一个LED灯

目录 点亮第一个LED灯单片机 GPIO 介绍GPIO 概念GPIO 结构 LED简介软件设计点亮D1指示灯LED流水灯 橙色 点亮第一个LED灯 单片机 GPIO 介绍 GPIO 概念 GPIO&#xff08;general purpose intput output&#xff09; 是通用输入输出端口的简称&#xff0c; 可以通过软件来控制…

我的2023年总结:旅行见天地,读书明事理,工作合行知

我的2023年总结 呵,时间过得真快啊! 有多快呢? 像烟花,一瞬间。 一瞬间 就在一瞬间 一场梦 梦了一千年 一转眼 只是一转眼 梦已醒 却过了一千年这是写年总结以来的第四年, 2023年往事回首三个字可概括:恍,荒,慌。 文章目录 我的2023年总结1、往年总结2、旅行如书2.1、…

数据库查询练习

数据准备 #建学生信息表student create table student ( sno varchar(20) not null primary key, sname varchar(20) not null, ssex varchar(20) not null, sbirthday datetime, class varchar(20) ); #建立教师表 create table teacher ( tno varchar(20) not null primary…