QT连接数据库报错

文章讲述了在QT中连接MySQL数据库时遇到的驱动加载失败的问题,以及解决步骤。包括修改mysql.pro文件,确保包含正确的库路径和头文件,处理编译错误,如mysql.h找不到,以及qsqldriverbase.pri文件的包含问题。成功编译后,将生成的插件文件复制到QT的相应目录以启用QMYSQL驱动。
摘要由CSDN通过智能技术生成

QT连接MySql数据库报错

缺少Mysql驱动
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7

QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7
MySql database open fail ---  QSqlError("", "Driver not loaded", "Driver not loaded")

原理:QT要连接Mysql,要通过QT的数据库连接插件连接到Mysql的动态库,再连接到MySql

不同版本的QT需要的插件不完全相同

1.修改mysql.pro代码

版本太高,可能会没有这个文件,我的是QT5.14.2
找到这个文件 D:\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql
在这里插入图片描述

用QT打开后,修改后点击编译
在这里插入图片描述

TARGET = qsqlmysql

HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp

#QMAKE_USE += mysql

OTHER_FILES += mysql.json

PLUGIN_CLASS_NAME = QMYSQLDriverPlugin


win32:LIBS += -LD:/MySQL/MySQLServer5.7/lib -llibmysql

INCLUDEPATH += D:/MySQL/MySQLServer5.7/include

DEPENDPATH += D:/MySQL/MySQLServer5.7/include


include(../qsqldriverbase.pri)

2.修改后,点击编译,没有问题直接跳到第3步即可

问题1:error: mysql.h: No such file or directory #include <mysql.h>

​ 这是因为你的文件路径有空格 这几个代码路径不能有空格,直接修改文件路径的话,你的mysql服务会出现问题,无法打开什么的

我试了很久,还是重开吧,我重新又装了一次mysql,注意QT的版本跟MySql的版本要一致,都是64位或者都是32位

win32:LIBS += -LD:/MySQL/MySQLServer5.7/lib -llibmysql

INCLUDEPATH += D:/MySQL/MySQLServer5.7/include

DEPENDPATH += D:/MySQL/MySQLServer5.7/include

问题2:Cannot read D:/qtsqldrivers-config.pri:No such file or directory

在这里插入图片描述

打开qsqldriverbase.pri文件,将第四行注释掉,即 #include($ s h a d o w e d ( shadowed( shadowed( $PWD)/qtsqldrivers-config.pri)

添加include(./configure.pri)
在这里插入图片描述

解决问题后:编译mysql.pro文件

在这里插入图片描述

3、编译成功后

  1. 可以看到 D盘(你自己QT在哪个盘就在哪里)下有个pluigins文件生成,

复制这两个文件到D:\Qt5.14.2\5.14.2\mingw73_64\plugins\sqldrivers
在这里插入图片描述
/
在这里插入图片描述

  1. 再把D:\MySQL\MySQLServer5.7\lib下面的这个文件复制到D:\Qt5.14.2\5.14.2\mingw73_64\bin

在这里插入图片描述

/
在这里插入图片描述

4、测试连接

连接数据库代码:

    //创建数据库类型
    db = QSqlDatabase::addDatabase("QMYSQL");
    db.setDatabaseName("");
    db.setHostName("127.0.0.1");
    db.setPort(3306);
    db.setUserName("");
    db.setPassword("");

    if(!db.open())
    {
        qDebug() <<"MySql database open fail --- " << db.lastError();
    }
    else
    {
        qDebug() <<"MySql database open successfully";
    }

成功

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值