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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 上一篇博文中提到了mysql的使用,但是很多人在使用新版Qt连接mysql的时候出现连接不上或者是没有mysql驱动的问题,网上有很多博文写了这个问题。但是对于最新版的mysql,使用网上的那些编译办法无法完全解决driver not loaded的问题,接下来我将写一篇文章详细的说一下如何解决该 问题,并且介绍一下除了使用驱动连接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中使用的

cd52401b3f8347bbb024e63f0b04c3e0.png

接下来我们开始编译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文件夹

14dba55f9e1b433fb1e3eda34e6273f2.png

我们将这两个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对应的驱动

1fc86e3505a64f65afc246ef15a95b44.png

   ●  添加配置并且测试

c25bd059bfe4494585f84fcca5f6fcc2.png

   ●  使用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");


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
17天前
|
安全 关系型数据库 MySQL
CentOS 7 yum 安装 MySQL教程
在CentOS 7上安装MySQL 8,其实流程很清晰。首先通过官方Yum仓库来安装服务,然后启动并设为开机自启。最重要的环节是首次安全设置:需要先从日志里找到临时密码来登录,再修改成你自己的密码,并为远程连接创建用户和授权。最后,也别忘了在服务器防火墙上放行3306端口,这样远程才能连上。
254 16
|
22天前
|
Ubuntu 安全 关系型数据库
安装与配置MySQL 8 on Ubuntu,包括权限授予、数据库备份及远程连接指南
以上步骤提供了在Ubuntu上从头开始设置、配置、授权、备份及恢复一个基础但完整的MySQL环境所需知识点。
223 7
|
2月前
|
Ubuntu 关系型数据库 MySQL
Ubuntu 22.04.1上安装MySQL 8.0及设置root密码的注意事项
这些是在Ubuntu 22.04.1 系统上安装MySQL 8.0 及设置root密码过程中必须考虑的关键点。正确的遵循这些步骤可确保MySQL的安装过程既顺利又安全。
512 20
|
2月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
170 10
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
429 1
Qt(C++)开发一款图片防盗用水印制作小工具
|
监控 C++ 容器
【qt】MDI多文档界面开发
【qt】MDI多文档界面开发
504 0
|
C++
C++ Qt开发:QUdpSocket网络通信组件
QUdpSocket是Qt网络编程中一个非常有用的组件,它提供了在UDP协议下进行数据发送和接收的能力。通过简单的方法和信号,可以轻松实现基于UDP的网络通信。不过,需要注意的是,UDP协议本身不保证数据的可靠传输,因此在使用QUdpSocket时,可能需要在应用层实现一些机制来保证数据的完整性和顺序,或者选择在适用的场景下使用UDP协议。
664 2
|
存储 运维 监控
Qt开发网络嗅探器01
Qt开发网络嗅探器01

推荐镜像

更多