Windows 下实现 Qt 连接 MySQL

如果应用只需要连接远程数据库,那么本地不需要安装 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
    #include
    #include

      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

你可能感兴趣的:(Windows 下实现 Qt 连接 MySQL)