当前位置: 首页 > news >正文

【QML】Cmake编译MySql驱动、连接Mysql数据库教程

自Qt5.7以后,Qt官方已经不再提供MySQL驱动,而是转向了MariaDB。但是,对于一些项目,可能还是需要使用MySQL,这时候就需要自己编译MySQL驱动了

当使用Cmake出现如下报错:QSqldatabase: No Such file and directory。这种情况其实是跟CmakeList里面里面添加SQL模块有关,需要在CmakeList里面添加SQL模块。

在Cmake中添加SQL模块

首先打开CmakeList.txt文件,添加如下代码:

1 find_package(Qt NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets Sql)
2 find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets Sql)

接下来在CmakeList.txt文件中添加如下代码:

注意${PROJECT_NAME}是您的项目名称,请将其替换为您的项目名称。

1 target_link_libraries(${PROJECT_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
2 target_link_libraries(${PROJECT_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::Sql)

编译MySQL驱动

在完成上述步骤后,如果你没有MYSQL驱动的话,你在编译的时候会在应用程序输出那里看到:

1 QSqlDatabase: QMYSQL driver not loaded
2 QSqlDatabase: available drivers: xxxx

配置MySQL驱动

推荐使用 GitHub 上的预编译版本:

将编译好的qsqlmysql插件复制到Qt的插件目录下。

/path/to/Qt/plugins/sqldrivers/

在Qt项目中,使用QSqlDatabase类连接MySQL数据库。

 1 #include <QtSql/QSqlDatabase>
 2 #include <QtSql/QSqlError>
 3 
 4 QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
 5 db.setHostName("localhost");
 6 db.setDatabaseName("your_database");
 7 db.setUserName("root");
 8 db.setPassword("your_password");
 9 
10 if (!db.open()) {
11     qDebug() << "Error: " << db.lastError().text();
12     return;
13 }

使用QSqlQueryModel和QSqlTableModel

QSqlQueryModel用于只读模式,QSqlTableModel用于可编辑模式。

1 #include <QtSql/QSqlQueryModel>
2 #include <QtSql/QSqlTableModel>
3 #include <QTableView>
4 
5 QSqlQueryModel *model = new QSqlQueryModel;
6 model->setQuery("SELECT * FROM your_table");
7 QTableView *view = new QTableView;
8 view->setModel(model);
9 view->show();

 

http://www.jsqmd.com/news/201132/

相关文章:

  • 有正能量的分图流络二网(题目记录)
  • 虚拟机安装Centos并ping通百度 - persist
  • Spring-boot读书笔记一@builder
  • 基于Python的商场停车管理系统的设计与实现毕业设计项目源码
  • AI应用架构师指南:构建业务需求到技术架构自动化映射智能体的核心模块
  • 基于SSM框架技术的房屋代管租赁系统的设计与实现毕业设计项目源码
  • 基于SSM农产品销售系统的设计与实现毕业设计项目源码
  • 1、程序员入门教程【非常详细】从零基础入门到精通,看完这一篇就够了 !
  • 深度学习计算机毕设之基于机器学习的CNN卷积神经网络对海洋壳类生物识别人工智能
  • 基于Python的购物管理系统毕业设计项目源码
  • 【韩剧】操控游戏全12集 4K高码完结 下载教程和资源分享
  • AI Coding全流程教程——0基础搭建“MEMO”健康打卡全栈Web应用(附提示词)
  • 泛型算法概述
  • 基于微信小程序的在线预约挂号系统(源代码+文档+PPT+调试+讲解)
  • 测试卡壳?掌握这7招,让你的业务代码“可测性”起飞!
  • 如何利用数据中台提升大数据领域的竞争力
  • 六大本科生论文抽检工具各有特色,用户可参考排名并依据查询需求选择
  • AI大模型:基于Python音乐推荐系统 数据分析可视化 协同过滤推荐算法 大数据毕业设计(全套源码+文档)建议收藏
  • Centos 7编译musl
  • 2025年程序员自由职业真相:赚钱更多了,还是更卷了?——一份基于300万人生存数据的年度报告
  • 不同功率电力设备,如何匹配对应的免维护吸湿器?
  • 基于CS架构的医院财务管理系统-计算机毕业设计源码+LW文档
  • AI大模型毕业设计:Django 淘宝商品预测系统 ARIMA预测 电商数据分析可视化 Hadoop spark(requests爬虫+销量时序预测 源码)✅
  • 关于软件外包平台,一些不太写在规则里的现实情况
  • 深度学习毕设选题推荐:人工智能基于机器学习的CNN卷积神经网络对海洋壳类生物识别
  • 基于Python的就业网站可视化系统设计与实现-计算机毕业设计源码+LW文档
  • 输入工作压力值,用可拓减压思维,输出5分钟+10分钟的碎片化减压方案,提升工作效率。
  • Flutter 数据库模块之 Draft 设计
  • 深度学习毕设选题推荐:基于python卷积神经网络训练识别牙齿是否健康机器学习
  • 北京收酒认准这家!亲测京城亚南酒业,童叟无欺太踏实 - 品牌排行榜单