0

0

mysql Qt连接mysql方法_mysql C++类库配置

P粉602998670

P粉602998670

发布时间:2025-12-31 10:22:02

|

760人浏览过

|

来源于php中文网

原创

qt项目需手动添加mysql驱动支持:确认架构一致、放置客户端库、补全sqldrivers插件;linux常需手动编译qsqlmysql插件;连接前须调用adddatabase并设置完整参数,注意mysql 8.0认证插件兼容性及dll依赖路径问题。

mysql qt连接mysql方法_mysql c++类库配置

Qt 项目中添加 MySQL 驱动支持(Windows / Linux)

Qt 默认不自带 MySQL 插件,QSqlDatabase::addDatabase("QMYSQL") 会失败,报错 "QMYSQL driver not loaded""Driver not loaded"。核心原因是:Qt 编译时没链接 MySQL 客户端库,或运行时找不到 libmysql.dll(Windows)或 libmysqlclient.so(Linux)。

实操分三步:确认 Qt 版本与 MySQL 库架构一致(x64/x86)、把 MySQL 客户端动态库放到可加载路径、在 Qt 构建目录中补全 sqldrivers/qsqlmysql.dll(Windows)或 .so(Linux)。

  • Windows 下优先用 MySQL 官方提供的 libmysql.dll(不是 mysqlclient.lib 静态库),版本建议与服务端一致(如 MySQL 8.0.33 → 用对应版本的库)
  • Linux 下需安装 libmysqlclient-dev(Ubuntu/Debian)或 mariadb-devel(CentOS/RHEL),再重新编译 Qt 的 qsqlmysql 插件
  • Qt Creator 中检查 QT_DEBUG_PLUGINS=1 环境变量,运行时可看到插件加载失败的具体原因(比如找不到 libssl.so.1.1

手动编译 qsqlmysql 插件(Linux 常见场景)

多数 Linux 发行版 Qt 包不含 MySQL 插件,且系统级 MySQL 开发包路径不统一,必须自己编译。关键不是“能不能连”,而是“插件有没有被 Qt 正确识别并加载”。

假设 Qt 安装在 /opt/Qt/6.5.3/gcc_64,MySQL 头文件和库在 /usr/lib/x86_64-linux-gnu/libmysqlclient.so/usr/include/mysql

立即学习C++免费学习笔记(深入)”;

Difeye-敏捷的轻量级PHP框架
Difeye-敏捷的轻量级PHP框架

Difeye是一款超轻量级PHP框架,主要特点有: Difeye是一款超轻量级PHP框架,主要特点有: ◆数据库连接做自动主从读写分离配置,适合单机和分布式站点部署; ◆支持Smarty模板机制,可灵活配置第三方缓存组件; ◆完全分离页面和动作,仿C#页面加载自动执行Page_Load入口函数; ◆支持mysql,mongodb等第三方数据库模块,支持读写分离,分布式部署; ◆增加后台管理开发示例

下载
cd /opt/Qt/6.5.3/Src/qtbase/src/plugins/sqldrivers/mysql
qmake "INCLUDEPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib/x86_64-linux-gnu -lmysqlclient" mysql.pro
make
sudo make install

生成的 libqsqlmysql.so 会被复制到 /opt/Qt/6.5.3/gcc_64/plugins/sqldrivers/。注意:qmake 必须用当前 Qt 版本的,不能混用;LIBS 中的 -lmysqlclient 依赖 OpenSSL 和 zlib,若报 undefined reference to SSL_*,需加 -lssl -lcrypto

Qt C++ 连接代码里容易漏掉的初始化项

QSqlDatabase 对象本身不自动触发驱动加载,必须显式调用 QSqlDatabase::addDatabase("QMYSQL"),且要在创建任何 QApplication 实例之前(尤其在子线程中使用时)。

  • 必须设置 setHostName()setDatabaseName()setUserName()setPassword(),缺一不可;空密码不能传 nullptr,得传空字符串 ""
  • MySQL 8.0+ 默认认证插件是 caching_sha2_password,Qt 5.12+ 支持,但旧 Qt(如 5.9)会连接失败,错误信息类似 "Authentication plugin 'caching_sha2_password' cannot be loaded" —— 此时需在 MySQL 侧执行 ALTER USER 'user'@'host' IDENTIFIED WITH mysql_native_password BY 'pwd';
  • 连接后务必检查 db.open() 返回值,不要只看 lastError() 字符串是否为空,有些底层错误(如 DNS 解析超时)会静默失败

Qt + MySQL 在 Windows 上 DLL 加载路径陷阱

即使 qsqlmysql.dll 已放在 plugins/sqldrivers/,仍可能报 "Driver not loaded" —— 因为该 DLL 依赖 libmysql.dll,而 Windows 不会从插件目录自动搜索其依赖项。

  • 最稳方案:把 libmysql.dll 复制到 Qt 可执行文件所在目录(即 build-xxx/Debug/build-xxx/Release/),不是 plugins/ 目录
  • 次选方案:把 libmysql.dll 所在路径加进系统 PATH,但调试时容易混淆不同版本(比如同时装了 XAMPP 和 MySQL Server)
  • 绝对避免:用 QCoreApplication::addLibraryPath() 添加插件路径——它只影响插件本身,不影响插件的 DLL 依赖

Dependency Walker(Windows)或 ldd qsqlmysql.dll(Linux)查实际缺失的依赖,比猜更可靠。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
视频后缀名都有哪些
视频后缀名都有哪些

视频后缀名都有avi、mpg、mpeg、rm、rmvb、flv、wmv、mov、mkv、ASF、M1V、M2V、MPE、QT、VOB、RA、RMJ、RMS、RAM、等等。更多关于视频后缀名的相关知识,详情请看本专题下面的文章,php中文网欢迎大家前来学习。

3857

2023.10.31

C++ Qt图形开发
C++ Qt图形开发

本专题专注于 C++ Qt框架在图形界面开发中的应用,系统讲解窗口设计、信号与槽机制、界面布局、事件处理、数据库连接与跨平台打包等核心技能,通过多个桌面应用项目实战,帮助学员快速掌握 Qt 框架并独立完成跨平台GUI软件的开发。

76

2025.08.15

C++ 图形界面开发基础(Qt方向)
C++ 图形界面开发基础(Qt方向)

本专题系统讲解 使用 C++ 与 Qt 进行图形界面(GUI)开发的核心技能,内容涵盖 Qt 项目结构、窗口组件、信号与槽机制、事件处理、布局管理、资源管理,以及跨平台编译与打包流程。通过多个小型桌面应用实战案例,帮助学习者掌握从界面设计到功能实现的完整 GUI 开发能力。

107

2025.12.05

mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

685

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

493

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

287

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

519

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

266

2023.07.25

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

23

2026.03.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 2.5万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 844人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号