在Qt中使用MySQL的时候,出现
”QSqlDatabase: QMYSQL driver not loaded”
报错,查看一下原来是现版本没有内置MySQL驱动,于是乎想办法来解决这个问题。
下面将详细介绍一下如何进行MySQL驱动编译以及简单的MYSQL数据库连接示例。
1、查看Qt中源码是否具备mysql的源码
查看该路径,如有以下图片内容文件则证明具备该驱动编译源码,如没有可通过维护工具进行源码下载。
D:\mysoft\Qt\5.15.2\Src\qtbase\src\plugins\sqldrivers\mysql
2、打开mysql.pro文件,编译器可根据需要选择,当前案例中我选择的编译器为MinGW64
3、下载mysql-8.0.35-winx64文件,目的是为了拿到该文件夹中的libmysql库文件
3.1 MySQL Community Downloads 进入该网站进行下载,我选择的是MySQL Community Server 8.0.35
3.2 下载完成后解压,放到固定的位置,我是放在了源码下面,找到我们所需的文件,文件路径为
D:\mysoft\Qt\5.15.2\Src\qtbase\src\plugins\sqldrivers\mysql-8.0.35-winx64\mysql-8.0.35-winx64\lib
4、修改源文件进行编译
4.1 修改mysql.pro文件。注释调第6行,增加13,15,16行内容,文件路径按照你实际放在的位置进行填写。
4.2 修改qsqldriverbase.pri文件。
注释掉 include($$shadowed($$PWD)/qtsqldrivers-config.pri)
增加: include(./configure.pri)
5、开始编译选择release模式,输出文件会在当前驱动器下的 \plugins\sqldrivers文件夹下。
复制 qsqlmysql.dll 、qsqlmysql.dll.debug 两个文件至以下文件夹内。
D:\mysoft\Qt\5.15.2\mingw81_64\plugins\sqldrivers
至此编译工作完成,重新打开QtCreator即可调用QMYSQL驱动。
如若还是出现之前的问题,请将mysql-8.0.35-winx64 的lib和bin文件夹添加至系统环境变量中。
以下是调用mysql的案例:
// 建立数据库连接
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost"); // 数据库服务器地址
db.setDatabaseName("mydatabase"); // 数据库名
db.setUserName("username"); // 数据库用户名
db.setPassword("password"); // 数据库密码
if (!db.open()) {
qDebug() << "数据库连接失败:" << db.lastError().text();
}
// 执行查询语句
QSqlQuery query;
QString sql = "SELECT * FROM mytable"; // 查询语句
if (!query.exec(sql)) {
qDebug() << "查询执行失败:" << query.lastError().text();
}
// 处理查询结果
while (query.next()) {
QString column1 = query.value(0).toString();
QString column2 = query.value(1).toString();
// 处理每一行的数据...
qDebug() << "Column1:" << column1 << "Column2:" << column2;
}
// 关闭数据库连接
db.close();