Qt链接MySQL遇到的坑

简介

环境:Qt 5.14.2+MySQL8.0.25(ZIP版)+msvc2017_64编译器
Qt从5.12版本后不在自带MySQL数据库的连接驱动,需要手动编译,编译之前你的先安装MySQL,和安装qt源码。默认你已经安装好了MySQL和安装qt源码。

一、编译

进入qt安装目录,然后找到Src\qtbase\src\plugins\sqldrivers\mysql,
我的路径为:C:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql,
打开路径下的mysql.pro,x修改内容如下:

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
include(../qsqldriverbase.pri)

INCLUDEPATH += "C:/mysql/include"   #mysql头文件
LIBS += "C:/mysql/lib/libmysql.lib" #mysql库文件
DESTDIR = ../mysql/lib/             # 库生成路径

将MySQL头文件和MySQL库文件路径替换成你的安装路径,然后先执行qmake,在点击构建如果不报错的话就能 在指定目录下生成链接MySQL的库(我这里生成在…/mysql/lib/),复制目录下的库文件到qt安装目录5.14.2\msvc2017_64\plugins\sqldrivers(我的为:C:\Qt\Qt5.14.2\5.14.2\msvc2017_64\plugins\sqldrivers)
注意:编译时所用的编译器和最后库放的路径要对应起来,例如使用msvc2017_64编译,生成的库也需要放到msvc2017_64路径下的plugins\sqldrivers,使用mingw编译也同理
在这里插入图片描述
最后将MySQL安装目录下的lib下的libmysql.dll库文件复制到对应编译器的bin目录下(eg: C:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin

二、测试

创建项目,在pro中添加QT+=sql,写入如下

//输出可用数据库
    qDebug()<<"available drivers:";
    QStringList drivers = QSqlDatabase::drivers();
    foreach(QString driver, drivers)
        qDebug()<<driver;

在这里插入图片描述
如果出现QMYSQL、及QMYSQL3那么恭喜你,驱动编译成功了。
连接MySQL

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setPort(3306);
    db.setDatabaseName("数据库名");
    db.setUserName("用户名");
    db.setPassword("密码");
    bool ok = db.open();
    if (ok){
        QMessageBox::information(this, "infor", "success");
    }
    else {
        QMessageBox::information(this, "infor", "open failed");
        qDebug()<<"error open database because"<<db.lastError().text();
    }


如果显示有MySQL驱动却还是不能链接成功,可以重启电脑在试,我就是在此卡了一个晚上😂

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值