环境:Qt6.7.3,编译器使用msvc2019_64,MySQL8.0
问题描述
- Qt连接MySQL报错如下:
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMIMER QODBC QPSQL QMARIADB QMYSQL
createConnection error: "Driver not loaded Driver not loaded"
MySQL动态库配置
- 将计算机上所安装的MySQL根目录下lib目录下的libmysql.lib和libmysql.dll复制到Qt根目录6.7.3\msvc2019_64\bin下,具体复制的路径依使用的编译器而定
- 将计算机上所安装的MySQL根目录下bin目录下的libcrypto-3-x64.dll和libssl-3-x64.dll复制到Qt根目录6.7.3\msvc2019_64\bin下,具体复制的路径依使用的编译器而定
MySQL驱动编译
前提:安装Qt时需要安装源码。安装过源码的在Qt根目录下才会有Src目录
- 修改安装的Qt根目录6.7.3\Src\qtbase\src\plugins\sqldrivers下的.cmake.conf配置文件,新增如下配置:修改的路径依安装的MySQL路径而定
SET(FEATURE_sql_mysql ON)
SET(MySQL_INCLUDE_DIR "E:/developTools/tools/mysql8.0/include")
SET(MySQL_LIBRARY "E:/developTools/tools/mysql8.0/lib/libmysql.lib")
- 使用Qt Creator打开Qt根目录6.7.3\Src\qtbase\src\plugins\sqldrivers下的CMakeLists.txt配置文件,然后选择msvc2019_64编译器,同时编译Debug和Release版本的
- 将build\Desktop_Qt_6_7_3_MSVC2019_64bit-Debug\plugins\sqldrivers目录下的相关文件复制到6.7.3\msvc2019_64\plugins\sqldrivers目录下:
测试程序
- mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <qDebug>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
QSqlDatabase db;
QSqlQuery query;
};
#endif // MAINWINDOW_H
- mainwindow.cpp
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setPort(3306);
db.setDatabaseName("student_grade_management_system");
db.setUserName("root");
db.setPassword("123456");
if (!db.open()) {
qDebug("QMYSQL connect failed.");
qDebug() << db.lastError().text();
} else {
qDebug("Sql connected.");
}
query=QSqlQuery(db);
QString sq="INSERT INTO `users` VALUES ('admin', '管理员', '123456', 1, NULL, 1, 'admin@example.com', '13800138000', 1, 0, '2025-02-01 20:13:07');";
bool res=query.exec(sq);
if(!res){
qDebug()<<"添加失败";
}else {
qDebug()<<"添加成功";
}
}
MainWindow::~MainWindow() {}
- main.cpp
#include "mainwindow.h"
#include <QApplication>
#include <QProcess>
#include <QStyleFactory>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
qDebug() << "Available drivers:";
QStringList drivers = QSqlDatabase::drivers(); //获取现在可用的数据库驱动
foreach(QString driver, drivers)
qDebug() << driver;
w.show();
return a.exec();
}
- 程序运行结果如下:
Sql connected.
添加成功
Available drivers:
"QSQLITE"
"QMIMER"
"QMARIADB"
"QMYSQL"
"QODBC"
"QPSQL"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)