工程文件
QT += sql
举例
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1");
db.setDatabaseName("test");
db.setPort(3306);
db.setUserName("root");
db.setPassword("123456");
if(db.open())
qDebug() << "Open successfully!";
else
qDebug() << "Open failed!";
qDebug() << QSqlDatabase::drivers();
出现如下错误
QSqlDatabase: QMYSQL driver not loaded
解决办法:
将MySQL安装目录下libmysql.dll
拷贝到工程目录中
Qt5.14.2版本
Qt5.14.2安装完,默认没有mysql的支持库。需要自己手动去编译源码
源码位置C:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql
MySQL 8位置C:\Program Files\MySQL\MySQL Server 8.0
mysql.pro修改
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:/Program Files/MySQL/MySQL Server 8.0/include"
DEPENDPATH += "C:/Program Files/MySQL/MySQL Server 8.0/include"
LIBS += "C:/Program Files/MySQL/MySQL Server 8.0/lib/libmysql.lib"
编译完的qsqlmysql.dll、qsqlmysqld.dll
拷贝到C:\Qt\Qt5.14.2\5.14.2\msvc2017_64\plugins\sqldrivers
目录下
拷贝完后效果
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7
MySQL 8的libmysql.dll
拷贝到源码工程目录
数据库不再报错
注意:
Qt选择msvc2017_64
编译