zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

Qt连接MySQL

2023-09-14 09:16:27 时间

1.为什么会记录这个问题。

QT众所周知是一个开源的,以C++为底层的可视化工具库,基本的C++在平时的练习阶段都只是命令行的黑窗口程序,但是使用QT可以做到可视化,据我所知,常见的音乐播放器,比如网易云音乐就是QT来实现的。大多数时候我们学习的过程也是借鉴,然后我遇到了把别人的代码拉下来之后跑不起来的问题,后来经过不断的尝试,终于搞清楚是MYSQL数据库的问题。

QT对MYSQL数据库真的不太友好,班上同学也在做毕业设计,有用Python的,有JS的,这些语言在连接数据库的时候都非常的简单,基本不会出太大问题,不像QT竟然还要编译MYSQL的一个文件,DLL动态库也要匹配。

不过好在,花了将近很久很久的时间,还是找到了方法,网上的方法也很多,但是可用的真的很少。我这里记录的也是回忆版,怕再装一次我又装不对了。

2.找一个需要连接MYSQL的程序。

我们拿到代码之后编译其中的Pro文件,就会有一些报错

这个报错就是因为MYSQL还没有连上QT

3.QT和MYSQL版本

QT我发现好多人都是用的5.12这个版本,所以选它就好了,我用的5.19也连上了,所以版本不是主要问题。

然后MYSQL去官方下载即可,我用的8.0.

需要注意的一点就是QT安装的时候记得装上64位的编译器,然后SQL也下载64位的,如果都硬要下32位也不是不可以,反正就是要匹配上。

再一个MYSQL的可视化工具我选的SQLyog,因为是免费的,Navicat我知道它更好用,但是它收费,大家也尽量不要下载破解版,要是在公司更别瞎下,不然公司都被告破产。

具体的安装流程大家就麻烦看一下其他文章,我写也写不出他们那种10w+的浏览量,就不增加工作量了。

4.编译SQL的pro文件

4.1 第一步打开msql.pro


**Qt源码路径(我的路径):D:\MyQt\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql

我的路径是安装Qt时就安装了Qt的源码,当安装Qt时没有安装Qt源码,须手动下载源码,下载完成后解压到一个没有中文的路径,根据上方给出的路径依次找到我们的mysql文件夹下的pro文件。

将这个文件夹下的mysql.pro文件使用Qt Creator打开,打开时会提示你使用什么编译在这里我使用 MinGW 64-bit 来编译,因为我MySQL安装的是64位的,所以使用64位的MinGW编译。

然后打开就是这个样子


4.2 第二步
第二步注释掉

 

QMAKE_USE += mysql


没有注释它,编译的时候就会产生一个错误: error: Library ‘mysql’ is not defined.

4.3 第三步
添加MySQL中include文件夹,引用MySQL安装路径lib文件夹下的libmysql.lib静态库

#这里的路径是MySQL安装路径下的include文件夹哦,记得替换成自己的MySQL安装路径哦
 
INCLUDEPATH +="D:\MySQL\include"
或者
INCLUDEPATH += D:\\MySQL\\include
 
#在这里引入静态库,写绝对路径好一点,不容易发生一些莫名其妙的错误(会弄的大佬除外)
#记得替换成自己的路径
 
LIBS +="D:\MySQL\lib\libmysql.lib"
或者
LIBS += D:\\MySQL\\lib\\libmysql.lib


4.4 第四步
这一步可以省略,但是为了方便,建议不要省略这一行代码哦。

# 将我们编译好的文件放在这个项目,就是mysql文件夹下的myLib文件夹内

#将我们编译好的文件放在这个项目,就是mysql文件夹下的myLib文件夹内
 
DESTDIR  = ../mysql/myLib/


当我们四步都做完之后,就是以下的样子


4.5 第五步:编译
左下角的“锤子”按钮,完成后,我们打开mysql文件夹,在pro文件右键选择在"Explorer中显示",就可以打开mysql文件夹

 

mysql文件夹下

myLib文件夹下,就会有三个文件(若没有或不够三个文件,请再次编译一次,有时候需要编译两次才会出现),把这三个文件复制到我们的Qt安装目录下对应的编译器(构建套件Kit)的插件的sql驱动文件夹下…

如:D:\MyQt\5.14.2\mingw73_64\plugins\sqldrivers
注意:

记得复制到自己的Qt安装路径下
你使用什么编译就复制到什么编译器(构建套件Kit)下(如:mingw73_64编译的,就放到 \mingw73_64\plugins\sqldrivers 中)
数据库的版本位,跟编译器(构建套件Kit)的版本位要一致的啊
在这篇文章里,我习惯把Qt的构建套件(Kit)叫编译器哦,我说的编译器不是Qt Creator,搞清楚了哦。

5.将MYSQL文件导入,构建出表

 首先SQlyog连上MYSQL,这个网上找,很多。

然后导入文件,先新建一个文件在root@localhost下,名字自己随便起。

然后导入 

有报错及时处理,不然程序跑不起来的

导入成功之后表也就都建成了,然后进入最后一步。

6.修改QT代码

别人的项目中有一些代码还是需要进行修改的,比如我这个里面有个connection.h文件里面连接MySQL的一些参数,一定是要匹配上的

bool connectDatabase()
{
    QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");   //主机名称,如localhost
    db.setDatabaseName("ordersysData");    //数据库名称
    //db.setPort(dataBasePort);              //数据库端口号
    db.setUserName("root");        //用户名称
    db.setPassword("123456");      //用户密码
    db.open();
    if(db.isOpen())
    {
 
        return true;
    }
    else
    {
        return false;
    }
}
 
#endif // CONNECTION_H

7.运行

配置到这里,基本就完成了,直接编译再运行,项目也就跑起来了,没有QMYsql not loaded来卡眼睛了,还有database not open 这个报错也很卡眼睛。

文章知识点与官方知识档案匹配,可进一步学习相关知识