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)查实际缺失的依赖,比猜更可靠。

相关专题

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

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

3335

2023.10.31

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

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

67

2025.08.15

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

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

40

2025.12.05

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

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

652

2023.06.20

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

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

244

2023.06.21

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

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

280

2023.07.18

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

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

513

2023.07.19

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

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

250

2023.07.25

桌面文件位置介绍
桌面文件位置介绍

本专题整合了桌面文件相关教程,阅读专题下面的文章了解更多内容。

0

2025.12.30

热门下载

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

精品课程

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

共48课时 | 1.5万人学习

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

共3课时 | 0.3万人学习

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

共1课时 | 777人学习

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

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