如果应用只需要连接远程数据库,那么本地不需要安装 MySQL,只需要找到 MySQL 提供的 libmysql.dll 和libmysqld.dll 两个动态连接库,把他们加入到 Qt安装目录\5.9\mingw53_32\bin\;默认 Qt 自带已编译好的 qsqlmysql.dll 和 qsqlmysqld.dll (文件路径为 **Qt安装目录\5.9\mingw53_32\plugins\sqldrivers\ **);两者如果配套就能成功地让 Qt 连接上 MySQL。
(我安装的Qt 版本是 Qt 5.9.0 mingw53_32,文章中提到的一些路径是我本机上的路径,需要进行适当修改)
一、测试 Qt 与 MySQL 是否能正常连接
假设 **Qt安装目录\5.9\mingw53_32\bin\ ** 下已加入了 libmysql.dll 和 libmysqld.dll,进行以下测试。
- 新建 Qt Widgets Application,修改 main.cpp 的代码为:
#include "mainwindow.h"
#include <QApplication>
#include <QtSql>
#include <QDebug>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
//建立连接
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setPort(3306);
db.setDatabaseName("mysql");
db.setUserName("root");
db.setPassword("yourPassword");
bool ok = db.open();
if(ok) qDebug()<<"OK";
else qDebug()<<"False";
return a.exec();
}
- 构建并运行项目,查看应用程序输出
如果输出 OK,那到此为止了,Qt 与 MySQL 连接正常;如果输出 False,不出意外是因为 libmysql.dll、libmysqld.dll 与 qsqlmysql.dll、qsqlmysqld.dll版本不匹配!需要对 qsqlmysql.dll、qsqlmysqld.dll 进行修改。
二、添加 MySQL 的libmysql.dll、libmysqld.dll
(注意:Qt msvc2015_64 可以使用32
位、64 位版本的 MySQL 文件,Qt mingw53_32 只能使用 32 位版本的MySQL 文件)
之前提到,如果应用只需要连接远程数据库,那么本地不需要安装 MySQL,而只需要用到 MySQL 提供的动态连接库 libmysql.dll 和 libmysqld.dll。那么如果不安装MySQL,怎么获取那两个动态链接库文件?可以这样做:
- 从已安装了 MySQL 的机器上拷贝这两个文件。
- 本地临时安装 MySQL,然后保留下需要的文件,卸载 MySQL。
安装 MySQL 可以去官网下载安装包,不过我不太喜欢这样做,因为现在 MySQL 的安装组件太多太杂,很多东西都是不必要。推荐去一些开源镜像站上下载对应版本,比如说 Tuna、USTC。临时安装 MySQL 之后先不急着卸载,后面编译 MySQL 驱动会用到。
三、重新编译 qsqlmysql.dll、qsqlmysqld.dll
编译 Qt 关于 MySQL 的驱动需要用到 Qt 的源码,获取 Qt 的源码可以使用 MaintenanceTool.exe 下载 Src,编译驱动用到的工程文件路径为 **Qt安装目录\5.9\Src\qtbase\src\plugins\sqldrivers\mysql\ **。源码差不多有2G的大小,而编译驱动需要用到的工程文件大约几十M,要是存储空间和网速不给力,建议只下载
qtbase-opensource-src-5.9.0.zip,需要的工程在 **qtbase-opensource-src-5.9.0\src\plugins\sqldrivers\mysql\ **。
用 Qt 打开上面提到的编译驱动用到的工程文件,在 mysql.pro 末尾加上这两句:
INCLUDEPATH += mysql安装目录\include
LIBS += -Lmysql安装目录\lib\ -llibmysql
构建并运行项目会在 C 盘下生成 plugins\sqldrivers 目录,里面包含 qsqlmysql.dll、qsqlmysqld.dll 两个文件,将它们复制一份覆盖原先的两个文件即可。再次进行 Qt 与 MySQL 的连接测试,成功了没有?
四、贴上我编译好的配套的驱动文件
百度云链接:click
密码:d4h6
网友评论