QT安装mysql驱动和使用ODBC连接mysql

news2025/3/11 1:16:18

文章目录

  • QT安装mysql驱动和使用ODBC连接mysql
    • 使用驱动连接mysql
      • 编译mysql驱动
      • 连接mysql
    • 使用ODBC连接mysql

QT安装mysql驱动和使用ODBC连接mysql

上一篇博文中提到了mysql的使用,但是很多人在使用新版Qt连接mysql的时候出现连接不上或者是没有mysql驱动的问题,网上有很多博文写了这个问题。但是对于最新版的mysql,使用网上的那些编译办法无法完全解决driver not loaded的问题,接下来我将写一篇文章详细的说一下如何解决该 问题,并且介绍一下除了使用驱动连接mysql,还可以使用odbc连接mysql。

使用驱动连接mysql

新版的qt是不支持mysql驱动的 QSQLITE QODBC QODBC3 QPSQL QPSQL7 默认的只有这几个,没有mysql相关的。如果我们需要使用mysql的驱动的话,则需要下载安装mysql和编译mysql驱动。这个时候我们来介绍如何下载和编译mysql驱动。

编译mysql驱动

  • 到mysql官网 ,点击下载

  • 接下来配置mysql 参考这篇博文 MySQL8.0.32的安装与配置_SSH-Victory的博客-CSDN博客

如果没问题的话,你的mysql是可以直接在cmd中使用的
在这里插入图片描述

接下来我们开始编译mysql驱动

进入你的mysql源码中找到mysql源码 C:\Qt\5.15.2\Src\qtbase\src\plugins\sqldrivers\mysql

双击pro打开项目,我们需要在QtCreator修改两个部分

  • 第一部分是mysql.pro中修改
TARGET = qsqlmysql

HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp
# 注释掉此处
# QMAKE_USE += mysql
OTHER_FILES += mysql.json
PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)
# 添加下面部分,路径需要根据自己的路径进行配置
INCLUDEPATH+=D:/mysql-8.0.32-winx64/mysql-8.0.32-winx64/include
LIBS+=D:/mysql-8.0.32-winx64/mysql-8.0.32-winx64/lib/libmysql.lib
DESTDIR=../mysql/myLib
  • 修改qsqldriverbase.pri
QT  = core core-private sql-private

# For QMAKE_USE in the parent projects.
# 注释这个部分
# include($$shadowed($$PWD)/qtsqldrivers-config.pri)
# 添加这句话
include(./configure.pri)
PLUGIN_TYPE = sqldrivers
load(qt_plugin)

DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII

修改好了之后点击编译,之后我们会在mysql路径下生成myLib文件夹

在这里插入图片描述

我们将这两个dll拷贝到C:\Qt\5.15.2\msvc2019_64\plugins\sqldrivers 这个文件夹内,文件夹请自己做对比。

之后我们在看sqldrivers

QSQLITE QMARIADB QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7 SQLITECIPHER

则有这么多了

我们还需要将刚下载的D:\mysql-8.0.32-winx64\mysql-8.0.32-winx64\lib下的libmysql.dll拷贝到C:\Qt\5.15.2\msvc2019_64\bin文件夹下

这个时候我们在测试的时候还是有可能出现driver not loaded ,

  • 需要考虑是驱动位数的问题,如果确定位数一致
  • 还有可能是openssl库的问题

只要将libcrypto-1_1-x64.dll libssl-1_1-x64.dll拷贝到工程目录下即可

连接mysql

qx::QxSqlDatabase::getSingleton()->setDriverName("QMYSQL");
qx::QxSqlDatabase::getSingleton()->setHostName("192.168.0.84");
qx::QxSqlDatabase::getSingleton()->setPort(3306);
qx::QxSqlDatabase::getSingleton()->setDatabaseName("qttest");
qx::QxSqlDatabase::getSingleton()->setUserName("root");
qx::QxSqlDatabase::getSingleton()->setPassword("123");

连接代码较为简单。

使用ODBC连接mysql

  • 下载mysql ODBC connector MySQL :: Download Connector/ODBC 下载msi那个
  • 傻瓜式安装该驱动即可
  • 打开odbc数据源管理程序,即可看到mysql对应的驱动

在这里插入图片描述

  • 添加配置并且测试

在这里插入图片描述

  • 使用QT连接
qx::QxSqlDatabase::getSingleton()->setDriverName("QODBC");
qx::QxSqlDatabase::getSingleton()->setHostName("127.0.0.1");
qx::QxSqlDatabase::getSingleton()->setPort(3306);
qx::QxSqlDatabase::getSingleton()->setDatabaseName("aa");
qx::QxSqlDatabase::getSingleton()->setUserName("root");
qx::QxSqlDatabase::getSingleton()->setPassword("123");

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

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

相关文章

不懂就问,Milvus 新上线的资源组功能到底怎么样?

在近期更新的 Milvus 2.x 版本中,我们上线了在社区中呼声一直很高的【资源组功能】。有了这个功能,用户再也不需要“为每个 collection 部署一套 Milvus 服务”的方案,轻松实现对 Query Node 资源进行分组管理,达到物理资源隔离的…

【C++】STL中的容器适配器 stack queue 和 priority_queue 的模拟实现

STL中的容器适配器 一、容器适配器1、什么是容器适配器2、STL标准库中的容器适配器 二、stack的模拟实现1、stack的简单介绍2、栈的模拟实现 三、queue的模拟实现1、queue的简单介绍2、queue的模拟实现 四、priority_queue的模拟实现1、priority_queue的简单介绍2、priority_qu…

家用洗地机哪款好用?好用的洗地机分享

要说现在家居清洁用什么单品更省心,洗地机必须要算一项。虽然这在国际上也不是什么新鲜的概念了,但是在国内兴起也只是这几年的事,关于家用洗地机什么牌子最好之类的问题也是很多人都比较关心的问题。我个人也是不喜欢做家务的,家…

Anaconda及其他说明及安装

来自神秘人的投稿! 以下内容来源于官方视频说明:Anaconda Distribution versus Miniconda和其他整理与添加。 一、基础信息了解 1. 什么是Anaconda Anaconda Distribution:形象的比喻——一台笔记本电脑,一切都组装好了&#x…

利用用户生成内容来促进您的 WooCommerce 商店的销售

用户生成内容 (UGC) 是由对品牌或其产品和服务进行评论或评论的消费者创建的内容。它可以包括评论、照片、博客文章、推文或任何类型的社交媒体内容。 UGC 可以应品牌要求制作,也可以由产品用户独立制作。当用户生成的内容是独立制作的时候——比如一个新布加迪手…

UG NX二次开发(C#)-建模-移除特征参数

文章目录 1、前言2、在UG NX中的操作3、 利用UFun函数实现1、前言 UG NX建模方式是采用特征建模的,创建一个对象都是一个特征,这在历史记录中可以查看特征的建模历史、特征的参数已经特征之间的关联关系。有时为了设计的需要,需要去除特征之间的关联关系,那么就要移除特征…

【硬件外设使用】——ADC

【硬件外设使用】——ADC ADC基本概念ADC使用方法pyb.adcmachine.adc ADC可用的传感器 ADC基本概念 ADC是模拟数字转换器(Analog-to-Digital Converter)的缩写,它是一种将模拟信号转换成数字信号的电子元件。 ADC广泛用于测量和监测领域&…

sggJava基础第四天

1 分支结构 分支结构 根据条件,选择性地执行某段代码。 有if…else和switch-case两种分支语句。 概述 顺序结构的程序虽然能解决计算、输出等问题 但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构 if…else形式 单分支结构 代码实现 …

leetcode160. 相交链表

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后&…

把脉分布式事务的模型、协议和方案

在当前的技术发展阶段,不同的业务场景对一致性、可靠性、易用性、性能等要求不同,应用架构可以根据实际场景的需求,灵活选择合适的分布式事务解决方案。行业中把分布式事务解决方案分为刚性事务方案和柔性事务方案这两大类。 就刚性事务这个…

leetcode328. 奇偶链表

给定单链表的头节点 head ,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。 第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。 请注意,偶数组和奇数组内部的相…

CentOS 7安装GitLab、创建用户、创建Repo、拉取推送

效果图 前言 gitlab全球出名,包含免费的社区版CE、收费的企业版EE,在国内安装速度一般; gitlab极狐版是中国特供版,用起来就跟CE一样,推荐国内使用~ 实现步骤 - 安装&配置 先准备好gitlab服务对外的访问地址&am…

技术分享 | MySQL级联复制下进行大表的字段扩容

作者:雷文霆 爱可生华东交付服务部 DBA 成员,主要负责Mysql故障处理及相关技术支持。爱好看书,电影。座右铭,每一个不曾起舞的日子,都是对生命的辜负。 本文来源:原创投稿 *爱可生开源社区出品,…

使用Vite工具构建OpenLayers应用

vite作为最近大火的前端构建工具,吸引了大批开发者和工具框架作者的关注。vite自称为下一代的构建工具,这是要取代webpack的节奏啊。openlayers最新版本的案例代码就使用了vite来构建,因此这一篇文章我们来给大家示范一下如何使用vite来构建一个基于openlayers的应用。 首先…

从「搭子」文化,看融云如何助力垂类社交应用增长

互联网人拜佛 be like 👆,主打的就是一个垂直和精准。关注【融云全球互联网通信云】了解更多 其实,这也是年轻人的交友现状。最近随着大学生“特种兵式”旅游出圈的“搭子”友情,就是这样。 “搭子”,AKA 垂直细分领…

怎么把图片拼接成长图,3招教你快速处理

怎么把图片拼接成长图的方法,有没有快速便捷可一键操作的呢?当我们把图片拼接成长图有很多优点,比如说我们在图片文件传输的时候就更加快捷方便,还有就是我们在图片展示的时候更加统一。虽然有这么多优点,但是如果我们…

【RobotFramework自动化测试】

robotframework介绍 RF是一个基于Python语言开发的,可扩展的,是以关键字驱动模式的自动化测试框架。RF最新的版本是2019 年7月份发布,7月份之前只支持python2.7,7月之后支持3.X的版本 robotframework的安装 安装python环境&…

【JUC】CAS

【JUC】CAS 文章目录 【JUC】CAS1. 概述2. Unsafe类 1. 概述 在Java并发编程中,CAS是一种非阻塞的算法,即Compare and Swap(比较并交换)。 CAS通过比较内存中某个位置的值和预期值,如果相同,则将该位置的…

springcloud各个组件搭配使用演示

springcloud各个组件使用demo Eureka服务注册中心 创建三个eureka服务注册中心,分别为: eureka-server1 spring:application:name: eureka-server1 server:port: 8001eureka:client:service-url:defaultZone: http://localhost:8002/eureka/,http://localhost:8003/eureka/…

EtherCAT和Ethernet的不同点有哪些, 通信周期又是什么意思?

小伙伴们,我们又来了。上期大概介绍了EtherCAT的一些特性,本期我们将会更详细的介绍一下EtherCAT的实现方式,通信周期的意义到底是什么、SDO和PDO到底是什么等概念。 首先要声明,尽管本期介绍略微深入,实际上小伙伴使…