Windows 基于Visual Studio 开发Qt 6 连接MySQL 8

前提条件:

1、Visual  Studio 2022 社区版(免费版)

2、Qt-6.5.1版本

3、MySQL 8 

Qt 6 配置MySQL 8 动态/静态连接库和MySQL 8 驱动。

  • libmysql.dll 和libmysql.lib是QT所需的动态和静态链接库;
  • qsqlmysql.dll 和qsqlmysql.dll.debug是Qt所需的mysql驱动; 

Qt 6 设置MySQL 8 驱动 

本文Qt 6 安装目录地址: D:\Qt\6.5.1\msvc2019_64\plugins\sqldrivers

第一步:将qsqlmysql.dll 和qsqlmysql.dll.debug 拷贝至Qt 6 安装目录下的插件/驱动目录中( D:\Qt\6.5.1\msvc2019_64\plugins\sqldrivers)

第二步:Qt 6 验证MySQL 8 驱动是否安装成功

首先使用Vistual Studio 2022 创建Qt 6 项目,项目名称为:QtWidgetsApplicationTwo

选择 Qt Widgets Application 项目,再点击下一步。

 

创建项目名称:QWidgetApplicationTwo,再点击下一步。

 

直接点击Next 按钮。

 

默认Qt 版本、系统、平台和Qt 模块,点击Next 按钮.

 

直接点击Finsh,完成项目创建。

运行QtWidgetApplicationTwo 项目的效果。

本章节知识重点: 

 首先在对应Qt项目qmark 中的*.pro文件中设置Qt += sql 如下:

Visual Studio 默认Qt 项目中的qmark 文件地址:E:\visual_workspace\QtWidgetsApplicationTwo\x64\Debug\qmake\temp\qtvars.proc

原文:

CONFIG += no_fixpath
QT += core gui widgets

原文添加sql:

CONFIG += no_fixpath
QT += core gui widgets sql

其次,修改QtWidgetsApplicationTwo.h 头文件对应的实现QtWidgetsApplicationTwo.cpp,在UI初始化函数添加如下代码片段:

    // 输出可用数据库qDebug() << "available drivers:";QStringList drivers = QSqlDatabase::drivers();foreach(QString driver, drivers)qDebug() << driver;

QtWidgetsApplicationTwo.cpp 源码

#include "QtWidgetsApplicationTwo.h"
#include "QtSql/QSqlDatabase"
#include "QtSql/QSqlQuery"
#include "QString"
#include "QMessageBox"
#include "QDebug"QtWidgetsApplicationTwo::QtWidgetsApplicationTwo(QWidget *parent): QMainWindow(parent)
{ui.setupUi(this);// 输出可用数据库qDebug() << "available drivers:";QStringList drivers = QSqlDatabase::drivers();foreach(QString driver, drivers)qDebug() << driver;}QtWidgetsApplicationTwo::~QtWidgetsApplicationTwo()
{}

运行QtWidgetApplicationTwo 项目,在控制台找到Qt 项目支持的数据库驱动信息输出。

Qt 6 设置 MySQL 8  动态和静态链接库

将libmysql.dll 和libmysql.lib 拷贝至D:\Qt\6.5.1\msvc2019_64\bin目录下。

本章节知识重点: 

修改QtWidgetsApplicationTwo.h 头文件对应的实现QtWidgetsApplicationTwo.cpp,在UI初始化函数添加如下代码片段:

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");//首次需要添加数据库驱动(必须在main程序中),第二次只需QSqlDatabase::database("QMYSQL")(其他文件中,防止多次使用);db.setHostName("192.168.43.10");//设置ipdb.setPort(3306);//端口号db.setDatabaseName("usc");//数据库名称db.setUserName("root");//用户名db.setPassword("123456");//密码QSqlQuery query = QSqlQuery(db);//db对象bool ok = db.open();//连接数据库if (db.open()) {QMessageBox::information(this, "infor", "success");//成功qDebug() << "success!!!";}else {QMessageBox::information(this, "infor", "open failed");qDebug() << "error open database because";//失败}

 运行QtWidgetApplicationTwo 项目,在控制台找到Qt 项目支持的数据库驱动信息输出。

 

Qt 6 项目配置MySQL 8 驱动 遇到的问题

问题一: error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: static class QList<class QString> __cdecl QSqlDatabase::drivers(void)" (__imp_?drivers@QSqlDatabase@@SA?AV?$QList@VQString@@@@XZ),函数 "public: __cdecl QtWidgetsApplicationTwo::QtWidgetsApplicationTwo(class QWidget *)" (??0QtWidgetsApplicationTwo@@QEAA@PEAVQWidget@@@Z) 中引用了该符号
1>E:\visual_workspace\QtWidgetsApplicationTwo\x64\Debug\QtWidgetsApplicationTwo.exe : fatal error LNK1120: 1 个无法解析的外部命令

产生此问题原因:Qt 项目没有添加Qt SQL 模块。

解决办法:

拓展->Qt VS Tool ->Qt Project Settings

上图,是VS 创建Qt 项目默认加载的Qt 模块。

 

上图,是为Qt 项目添加的sql 模块. 

问题二:QSqlDatabase:MYSQL driver not loaded

产生此问题的原因:从CSDN 资源下载器下载的Qt 6 关于MySQL 8.0.23 驱动有错误才导致上述问题的产生。

解决办法如下:

Qt 对应MySQL 驱动下载 ,https://github.com/thecodemonkey86/qt_mysql_driver/releases

根据自己本地Qt 版本和平台架构选择对应的MySQL  驱动包.

 

本文演示Qt 版本详情信息:

Qt 6.5.1_64位

Windows 系统

 基于MSVC_2019

我选择的驱动版本为:qsqlmysql.dll_Qt_SQL_driver_6.5.1_MSVC2019_64-bit.zip

解压后的目录:

1、 将上图目录中libmysql.dll 拷贝至D:\Qt\6.5.1\msvc2019_64\bin目录下,替换原有libmysql.dll 并删除libmysql.lib。

2、将sqldrivers 目录中的qsqlmysql.dll 和qsqlmysqld.dll拷贝至Qt 6 安装目录下的插件/驱动目录中( D:\Qt\6.5.1\msvc2019_64\plugins\sqldrivers),替换原有qsqlmysql.dll 并删除qsqlmysql.dll.debug 

Qt 6 知识拓展

Qt 版本信息输出

#include <QtCore/QCoreApplication>
#include <QSysInfo>
#include <QDebug>int main(int argc, char* argv[])
{QCoreApplication a(argc, argv);qDebug() << "buildAbi: " << QSysInfo::buildAbi();qDebug() << "buildCpuArchitecture: " << QSysInfo::buildCpuArchitecture();qDebug() << "currentCpuArchitecture: " << QSysInfo::currentCpuArchitecture();qDebug() << "kernelType: " << QSysInfo::kernelType();qDebug() << "kernelVersion: " << QSysInfo::kernelVersion();qDebug() << "machineHostName: " << QSysInfo::machineHostName();qDebug() << "prettyProductName: " << QSysInfo::prettyProductName();qDebug() << "productType: " << QSysInfo::productType();qDebug() << "productVersion: " << QSysInfo::productVersion();return a.exec();
}

控制台输出结果:

buildAbi:  "x86_64-little_endian-llp64"
buildCpuArchitecture:  "x86_64"
currentCpuArchitecture:  "x86_64"
kernelType:  "winnt"
kernelVersion:  "10.0.22621"
machineHostName:  "LAPTOP-8R0KHL88"
prettyProductName:  "Windows 11 Version 22H2"
productType:  "windows"
productVersion:  "11"

查看 Docker容器中MySQL 版本信息 

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                  NAMES
241448b9f8d6        mysql:8.0.23        "docker-entrypoint.s…"   7 months ago        Up 3 weeks          0.0.0.0:3306->3306/tcp, 33060/tcp                      mysql
1c3d38b948ba        zookeeper           "/docker-entrypoint.…"   13 months ago       Up 3 weeks          2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, 8080/tcp   zookeeper
62233dfad35b        minio/minio         "/usr/bin/docker-ent…"   13 months ago       Up 3 weeks                                                                 minio-server
[root@localhost ~]# docker exec -it 241448b9f8d6 bash
root@241448b9f8d6:/# mysql --version
mysql  Ver 8.0.23 for Linux on x86_64 (MySQL Community Server - GPL)

相关参考文章

Qt 编译MySQL 8 驱动:Qt Creator 6.1.0连接MySql8.0.23配置

Qt 连接MySQL 数据库: Qt配置mysql8

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/141329.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

C#通过重写Panel改变边框颜色与宽度的方法

在C#中,Panel控件是一个容器控件,用于在窗体或用户控件中创建一个可用于容纳其他控件的面板。Panel提供了一种将相关控件组合在一起并进行布局的方式。以下是Panel控件的详细使用方法: 在窗体上放置 Panel 控件: 在 Visual Studio 的窗体设计器中,从工具箱中拖动并放置一…

2023 “华为杯” 中国研究生数学建模竞赛(D题)深度剖析|数学建模完整代码+建模过程全解全析

问题一&#xff1a;区域碳排放量以及经济、人口、能源消费量的现状分析 思路&#xff1a; 定义碳排放量 Prediction 模型: CO2 P * (GDP/P) * (E/GDP) * (CO2/E) 其中: CO2:碳排放量 P:人口数量 GDP/P:人均GDP E/GDP:单位GDP能耗 CO2/E:单位能耗碳排放量 2.收集并统计相关…

基于 SpringBoot+Vue的电影影城管理系统,附源码,数据库

文章目录 第一章 简介第二章 技术栈第三章 功能分析第四章 系统设计第5章 系统详细设计六 源码咨询 第一章 简介 本影城管理系统&#xff0c;是基于 Java SpringBoot 开发的。主要包括二大功能模块&#xff0c;即用户功能模块和管理员功能模块。 &#xff08;1&#xff09;管…

【LeetCode热题100】--238.除自身以外数组的乘积

238.除自身以外数组的乘积 思路&#xff1a; 利用索引左侧所有数字的乘积和右侧所有数字的乘积&#xff08;即前缀和后缀&#xff09;相乘得到答案 算法&#xff1a; 1.初始化两个空数组L和R&#xff0c;对于给定索引i&#xff0c;L[i]代表的是i左侧所有数字的乘积&#xff…

Android设计支持库

本文所有的代码均存于 https://github.com/MADMAX110/BitsandPizzas 设计支持库&#xff08;Design Support Library&#xff09;是 Google 在 2015 年的 I/O 大会上发布的全新 Material Design 支持库&#xff0c;在这个 support 库里面主要包含了 8 个新的 Material Design …

华为数通方向HCIP-DataCom H12-831题库(单选题:121-140)

第121题 在华为交换机上配置RADIUS服务器模板时,下列选项中哪些参数为可选的配置参数? A、认证服务器地址和端口 B、RADIUS自动探测用户 C、计费服务器地址和端口 D、Shared-key 答案: B 解析: 在华为交换机上配置 radius 服务器模板时,需要配置共享秘钥,认证服务器地址…

git revert 撤销之前的提交

git revert 用来撤销之前的提交&#xff0c;它会生成一个新的 commit id 。 输入 git revert --help 可以看到帮忙信息。 git revert commitID 不编辑新的 commit 说明 git log 找到需要撤销的 commitID &#xff0c; 然后执行 git revert commitID &#xff0c;会提示如下…

第二证券:A股市场的投资者结构如何?什么叫“四大类”?

有很多的出资者在A股商场上进行着出资生意&#xff0c;并且这些出资者又分为许多类型。详细的&#xff0c;A股商场的出资者结构怎样&#xff1f;什么叫做“四大类”&#xff1f;关于这些&#xff0c;本文将借用相关知识来作部分讨论&#xff0c;以供咱们参阅。 A股商场的出资者…

广东桉木建筑模板:天然美触,打造高品质建筑

在广东这片充满活力和创新的土地上&#xff0c;桉木建筑模板以其独特的天然美触和卓越的性能而备受瞩目。作为一种优质的建筑材料&#xff0c;广东桉木建筑模板在建筑行业中扮演着重要的角色。它的出色性能和独特韵味使其成为建筑领域中备受青睐的选择。广东桉木建筑模板以其独…

【线性回归、岭回归、Lasso回归分别预测患者糖尿病病情】数据挖掘实验一

Ⅰ、项目任务要求 任务描述&#xff1a;将“diabetes”糖尿病患者数据集划分为训练集和测试集&#xff0c;利用训练集分别结合线性回归、岭回归、Lasso回归建立预测模型&#xff0c;再利用测试集来预测糖尿病患者病情并验证预测模型的拟合能力。具体任务要求如下&#xff1a; …

springboot 获取参数

1.获取简单参数 2.实体对象参数

OpenHarmony应用分发运营体系

一、分发流程 图片来源&#xff1a;OpenHarmony官网 二、主要途径 更多 开鸿智谷在鸿OS 开发板 设备 润和HiHopeOS 开发板 设备 软通动力SwanLinkOS 开发板 设备 深开鸿KaiHongOS 开发板 设备 华为HarmonyOS AGC 18N 开放原子开源基金会OpenHarmony 底座基础

grafana结合Skywalking追踪Trace(一)

SW应用中对Trace的跟踪一直占有重要的地位&#xff0c;即可以用户指定的tag值&#xff0c;可以筛选出感兴趣的trace(跟踪链)&#xff0c;用户可以通过跟踪链追踪各个Span的详细情况。 但是在使用SW OAP原生页面中会存在两个问题&#xff1a; 1&#xff09; Trace数量太多了&…

支撑位和阻力位在Renko和烛台图如何使用?FPmarkets澳福3秒回答

很多投资者都知道&#xff0c;Renko图表和普通日本烛台都会采用相同的交易信号&#xff0c;即支撑位和阻力位。那么支撑位和阻力位在Renko和烛台图如何使用?FPmarkets澳福3秒回答。 这些信号在任何时间框架上都会出现&#xff0c;且在蜡烛图交易中颇受欢迎。对于Renko图表而言…

sentinel环境搭建以及微服务接入

• sentinel部署 • sentinel-镜像制造 • sentinel-镜像推送 • sentinel-部署配置文件 • 访问控制台 • 外网访问控制台 • 集群内访问 • 配置规则 • 限流效果 • 微服务接入 • pom文件引入依赖 • pod部署文件添加配置 Sentinel 控制台是流量控制、熔断降级规则统一配置…

Python的安装教程(Windows)

简单理解就两个动作&#xff1a;安装python、安装PyCharm 我们要跟着做&#xff01;&#xff01;&#xff01; 编辑器和编译器 编辑器和编译器是两个不同的概念。编辑器是一种编写代码的工具&#xff0c;方便人对程序的操作和管理。常见的编辑器有文本编辑器、网页编辑器、源…

markdown

title: “Markdown” createTime: 2022-01-05T10:33:2908:00 updateTime: 2022-01-05T10:33:2908:00 draft: false author: “name” tags: [“markdown”] categories: [“software”] description: “测试的” markdown学习总结 标题的使用 一级标题&#xff1a;使用"…

快速排序代码及时间空间复杂度

快速排序&#xff08;Quick Sort&#xff09;是一种高效的排序算法&#xff0c;它的平均时间复杂度为 O(n log n)&#xff0c;是许多排序算法中性能最好的之一。下面是快速排序的代码示例和时间空间复杂度分析&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#x…

MC互联网联机frp实现

我使用的是java版本的MC&#xff0c;联机方式如下。只是一个简单的笔记&#xff0c;所以只说重点。 主机开启局域网 整合包中自带的局域网联网插件&#xff1a;Lan Server Properties 1.10.1 在线模式选择关闭&#xff0c;不然非正版用户无法连接。 frp 具体不说了&#x…

VS2022创建控制台应用程序后没有Main了,如何显示Main?

文章目录 问题描述原因解决方案简单的顶级语句试用计算器 其他文章 问题描述 用VS2022创建一个控制台应用后&#xff0c;没有名称空间和Main函数了&#xff0c;只有一个WriteLine&#xff0c;如下所示。 // See https://aka.ms/new-console-template for more information Co…