Qt5.12连接MySql5.7-32数据库

博文许久无暇更新,最近在做个Qt的系统,用到了MySql数据库,没想到在使用的过程中出现了各种各样的问题,今天终于成功了,现在记录下。
1、MySql安装
这里我用的是免安装版本,需要安装的童鞋百度教程即可
2、Qt安装
教程百度即可,注意的是,安装过程中一定要选择源码安装,后面会用得上的。
3、连接测试

    qDebug()<<QSqlDatabase::drivers();
    //建立连接
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setPort(3306);
    db.setDatabaseName("hotel");
    db.setUserName("root");
    db.setPassword("123456");   //设置数据库连接账号的密码
    bool ok = db.open();
    if(ok)
        qDebug()<<"OK";
    else
        qDebug()<<"False";

上面的代码是个测试数据库连接过程,测试过程中,出现了一下问题:“QSqlDatabase can’t open:”和“QSqlDatabase: QMYSQL driver not loaded”等问题,于是开始百度,开始解决以上问题:
**(1)**保证Qt 和MySql版本一致,都为32位版本,同时将libmysql.dll拷贝到Qt安装目录下:D:\Qt\Qt5.12.5\5.12.5\mingw73_32\bin,然后重新编译,问题依旧;
**(2)**经过查询发现,Qt中缺少了qsqlmysql.dll和qsqlmysqld.dll,这两个dll是Qt和MySql之间沟通的桥梁,缺一不可,于是开始重新编译Qt源码,经过查找路径如下:
在这里插入图片描述
**(3)**编译过程如下
win32:LIBS += D:/mysql-5.7.32-win32/lib/libmysql.lib # 添加你的mysql安装目录下的lib文件夹下的libmysql.lib文件
INCLUDEPATH += D:/Program Files/MySQL 5.7/mysql-5.7.32-win32/include # 添加你自己的mysql安装目录下的include文件夹
DEPENDPATH += …/Program Files/mysqlDll 设置编译好的qmysql.dll放置的目录,不过这里dll最后生成放在D:\plugins\sqldrivers目录下
在这里插入图片描述

点击qt左下角的小锤子,出现如下的两个错误:
Cannot read H:/qtsqldrivers-config.pri: No such file or directory
Project ERROR: Library ‘mysql’ is not defined.

问题1:
  第一个问题是说没有这样的文件,看了下,的确没有这个文件,但是找到了类似的文件,我在我的文件夹:
D:\Qt\Qt5.12.5\5.12.5\Src\qtbase\src\plugins\sqldrivers下,发现了一个configure.pri,就把原来需要qtsqldrivers-config.pri的地方改成configure.pri。

解决:
  在qt里的左侧栏里,双击qsqldriverbase.pri打开该文件,将第四行注释掉,也就是前面加个#号,这样:
#include( s h a d o w e d ( shadowed( shadowed(PWD)/qtsqldrivers-config.pri),然后添加include(./configure.pri),保存,完成。
在这里插入图片描述

问题2:
  Library ‘mysql’ is not defined,这个最好解决,你说未定义,那我就不要了呗,在qt左侧栏中双击打开mysql.pro,将第六行注释掉,这样:#QMAKE_USE += mysql,这个参考了其他人的博客,但是这里我发现“win32:LIBS += D:/mysql-5.7.32-win32/lib/libmysql.lib # 添加你的mysql安装目录下的lib文件夹下的libmysql.lib文件”这里的路径如何包含空格,发现也会报错,原因暂不可知,Qt我记得是支持含空格的路径。
  修改完,再重新构建,一路顺利
  在这里插入图片描述
将生成的qsqlmysql.dll文件和qsqlmysqld.dll拷贝到Qt的bin目录下,最后demo重新编译,测试成功。
总结,如果使用了Qt sql模块来操作MySQL数据库的话,需要三个库文件来支持,分别为:libmysql.dll、qsqlmysql.dll文件和qsqlmysqld.dll文件,三个文件缺一不可。若在Qt安装路径的插件文件夹路径下(D:\Qt\Qt5.12.5\5.12.5\mingw73_32\plugins\sqldrivers )找不到对应的驱动扩展文件,那就需要编译相应的驱动扩展文件到相应路径。同时要将用于与MySQL连接的扩展包:mysql-5.7.32-win32文件夹下的libmysql.dll库文件复制到Qt构建套件路径D:\Qt\Qt5.12.5\5.12.5\mingw73_32\bin文件夹中,确保能与MySQL连接成功。
花了一天时间,终于弄明白了,Qt下MySql是如何来工作的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值