注:本文配置的是Qt creator+MinGW的MySQL数据库驱动,VS+MSVC会在笔者博客后续文章发出。
Qt6.9要想使用官方的数据库驱动,需要手动进行编译,至于官方为什么没有直接编译好给用户使用,以下给出几点网上搜索的原因,简单来说就是MySQL版本太多了,而版本不一样对外的dll接口文件就不一样,所以干脆开放出来给用户自己去编译和配置,这样就比较灵活。
1.依赖问题:
MySQL 驱动依赖于 MySQL 客户端库(如 libmysql.dll 等)。不同的操作系统和系统环境中,MySQL 客户端库的版本和配置可能不同。为了确保兼容性,官方很难针对所有可能的 MySQL 环境预编译出通用的驱动。用户自行编译可以根据自己实际安装的 MySQL 版本和环境来配置,从而保证驱动与本地 MySQL 服务的兼容性。2.动态更新与定制性:
不同用户使用的 MySQL 版本和配置可能存在差异,自行编译驱动可以根据实际情况灵活调整编译选项。例如,有些用户可能使用的是 MySQL 的最新版本,有些则使用旧版本,官方预编译的驱动可能无法适配所有版本。用户自行编译能够保证驱动与自己使用的 MySQL 数据库版本完全匹配,还可以根据需求开启或关闭某些特性。
整个过程写的非常详细,完全适合零基础小白。
一、准备工作
1.安装和配置好的MySQL。我的版本是8.4.6 LTS,如果不知道怎么安装和配置MySQL可以看看笔者前面的文章:Windows系统MySQL数据库安装、配置和基本使用-CSDN博客
2.Qt creator。我的版本是17.0.0社区版。
二、开始配置前的测试
在开始配之前进行此步的目的是:1.测试和验证当前Qt版本可用驱动列表里面没有QMYSQL驱动,且确实连接不到数据库。2.配置完成后再通过此测试项目测试即可验证配置成功。
2.1创建项目
打开Qt creator新建一个Qt Widgets Application项目,基类选择QMainWindow。

构建套件选择MinGW,因为我们配置的就是MinGW的MySQL驱动,此处当然要选MinGW构建测试项目。

2.2编写测试代码
2.2.1添加数据库模块的引用
打开项目的.pro文件引入数据库模块,在Qt后面空格隔开追加一个sql即可。

2.2.2在mainwindow.h头文件申明一个连接MySQL的方法。
注意添加头文件。这里就三行代码就不给出具体代码了。

2.2.3在mainwindow.cpp文件添加上述连接MySQL方法的实现。
代码附在图片后面。

#include <QMessageBox>
#include <qsqlerror.h>//注意添加这两个头文件
void MainWindow::connectMySQL()
{
//打印当前Qt中可用的数据库驱动。
qDebug() << "\n\n";
qDebug() << "There are all can being used DRIVERS:";
qDebug() << QSqlDatabase::drivers()<<"\n\n";
//连接数据库
base = QSqlDatabase::addDatabase("QMYSQL", "main");//区分大小写的
base.setDatabaseName("qt_qq_main");//要连接的数据库名称
base.setHostName("localHost");//主机名称
base.setUserName("root");//用户名
base.setPassword("192412");//密码
base.setPort(3306);//端口号
if (base.open())
{
QMessageBox::information(nullptr, "Tip", "Successed to opened database!",QMessageBox::Yes);
}
else
{
QMessageBox::information(nullptr, "Tip", "Failed to opened database!",QMessageBox::Cancel);
qDebug() << base.lastError().text();//将错误信息传递出来
}
}
2.2.4调用数据库连接方法。
在mainwindow.cpp的构造函数中调用。

2.2.5运行
运行代码,在应用程序输出页会看到以下输出,前面部分第二行打印了当前所有可用的驱动,可以发现没有我们需要的QMYSQL驱动。最后一行打印了打开数据库连接的报错:不能加载所需的驱动,可用的只有后面给出的这几个也就是第二行的所有驱动。这就是我们为什么手动编译和配置这个驱动,因为没有,没嘚用。


三、在Qt creator下载驱动配置源码。
打开Qt creator的工具->Qt Maintenance Tool->Start Maintenance Tool

登录后,选择添加或移除组件。

在Qt->Qt 6.9.1下勾选Sources,随后等待下载完成即可。

下载完成后,打开Qt的安装目录->6.9.1文件夹下可以发现多了一个文件夹Src,这里面就有我们需要的驱动配置源码。(注:目录的6.9.1对应你的Qt版本,我的Qt版本是6.9.1所以这里就是6.9.1文件夹)。

四、编译驱动源码
为了不对源码做任何修改,我们将需要的源码复制出来做修改和编译,生成我们需要的dll文件。
4.1创建一个要用来编译的文件夹。
这里可以直接和我一样在前面的Src文件夹下创建一个文件夹plugins_Setting,意为驱动配置,这里的名字自己起无所谓的,文件夹放在哪里也无所谓。

在plugins_Setting文件夹下再创建两个文件夹,一个用来存放待会要复制过来的驱动相关的源码,另一个存放从MySQL安装目录复制过来的库文件和头文件。

4.2将驱动相关源码复制过来。
复制Src下面的qtbase一整个文件夹到我们自己创建的驱动源码文件夹plugins_source。

4.3将MySQL库文件和头文件复制过来
打开你的MySQL安装目录,一起复制include文件夹和lib文件夹到我们之前创建的存放MySQL相关文件的文件夹MySQL_lib。至此所有需要的文件已经准备完毕,下面就可以开始编译了。

为了防止读者对文件的存放位置不清晰我给出一个文件结构图,文件名称都写的我的命名。

4.4编译
4.1.1打开源码
找到下图目录中的CMakeLists.txt,右键选择打开方式,以Qt creator打开。

4.4.2项目设置
选择MinGW,因为我们要配置的就是Qt creator+MinGW使用的MySQL驱动。

4.4.3修改配置文件
打开.cmake.conf配置文件输入以下配置代码。


SET(FEATURE_sql_mysql ON)
SET(MySQL_INCLUDE_DIR "E:/CodingSoftware/Qt/Re_ZHUANG/6.9.1/plugins_Setting/MySQL_lib/include")
SET(MySQL_LIBRARY "E:/CodingSoftware/Qt/Re_ZHUANG/6.9.1/plugins_Setting/MySQL_lib/lib/libmysql.lib")
注:MySQL_INCLUDE_DIR后面的文件地址是之前复制过来MySQL头文件的地址,MySQL_LIBRARY后面的地址是之前复制过来MySQL的lib文件夹下的libmysql.lib文件地址。
4.4.4构建
这里点锤子进行构建,不要点运行!如果构建完成后,在编译输出栏的未报错,且内容与下图大致一致则编译成功。


编译完成后可以发现,在当前项目目录中已经生成了我们需要的dll文件和debug文件。

五、将编译好的dll文件添加到MinGW
5.1添加编译生成的dll文件
将前面生成的dll文件和debug文件添加到MinGW驱动文件夹里面

5.2添加lib文件
找到你的MySQL安装目录下的bin目录里面的libmysql.dll和libmysql.lib文件。

将这两个文件放到Qt安装目录->Qt版本号目录->mingw_60->bin目录里面。

至此,所有的编译和配置都结束了!
六、再次测试
重新打开我们在2.2中编写的测试代码,点击运行,可以发现可用的驱动多出来了我们需要的QMYSQL驱动。


846

被折叠的 条评论
为什么被折叠?



