Windows 环境下使用 Qt 连接 MySQL

发布时间 - 2026-01-11 02:22:02    点击率:

如果应用只需要连接远程数据库,那么本地不需要安装 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 的连接测试,成功了没有?


# Qt连接MySql数据库  # windows下qt连接mysql  # Qt连接Mysql  # QT连接Mysql数据库的详细教程(亲测成功版)  # 可能是全网最详细的Qt连接MySQL数据库教程  # qt首次连接MYSQL驱动的各种问题图文详解  # QT5连接MySQL实现增删改查  # QT连接Mysql数据库的实现步骤  # QT连接MYSQL数据库的详细步骤  # Qt连接MySQL数据库的实现(保姆级成功版教程)  # 安装目录  # 只需要  # 这样做  # 可以使用  # 都是  # 不需要安装  # 是因为  # 太多  # 就能  # 不出  # 会在  # 这两个  # 镜像  # 站上  # 不给  # 两句  # 到此为止  # 我本  # 自带  # 急着 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何保护应用免受CSRF攻击?(原理和示例)  PythonWeb开发入门教程_Flask快速构建Web应用  Laravel Docker环境搭建教程_Laravel Sail使用指南  Linux后台任务运行方法_nohup与&使用技巧【技巧】  微信h5制作网站有哪些,免费微信H5页面制作工具?  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  Laravel怎么在Controller之外的地方验证数据  如何在搬瓦工VPS快速搭建网站?  教你用AI将一段旋律扩展成一首完整的曲子  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  英语简历制作免费网站推荐,如何将简历翻译成英文?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  如何在Windows虚拟主机上快速搭建网站?  node.js报错:Cannot find module &#39;ejs&#39;的解决办法  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  nginx修改上传文件大小限制的方法  如何在阿里云高效完成企业建站全流程?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  如何用免费手机建站系统零基础打造专业网站?  如何快速搭建高效香港服务器网站?  android nfc常用标签读取总结  Laravel用户密码怎么加密_Laravel Hash门面使用教程  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  Laravel如何处理文件下载请求?(Response示例)  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  微信小程序 五星评分(包括半颗星评分)实例代码  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  如何用腾讯建站主机快速创建免费网站?  Laravel API资源类怎么用_Laravel API Resource数据转换  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  网站建设整体流程解析,建站其实很容易!  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  三星网站视频制作教程下载,三星w23网页如何全屏?  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  使用豆包 AI 辅助进行简单网页 HTML 结构设计  如何撰写建站申请书?关键要点有哪些?  怎么用AI帮你设计一套个性化的手机App图标?  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  如何用JavaScript实现文本编辑器_光标和选区怎么处理  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  海南网站制作公司有哪些,海口网是哪家的?  jQuery 常见小例汇总  浅述节点的创建及常见功能的实现  网站制作免费,什么网站能看正片电影?  中国移动官方网站首页入口 中国移动官网网页登录  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中