Qt和MySQL的连接

news2024/11/13 8:04:53

具体视频的教程

视频教程

我的文章是做一下补充的

流程:

第一点你要确保你的数据库的位数,如果你数据库位数的是32位,mingw编译的时候就需要选择的是32位**(在下面会提到)**

去到所在的文件在这里插入图片描述
点击.pro文件进行编译驱动

在这里插入图片描述
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+="$$quote(C:/Program Files (x86)/MySQL/MySQL Server 5.5/include)"           #MySQL服务器的include目录
LIBS+="$$quote(C:/Program Files (x86)/MySQL/MySQL Server 5.5/lib/libmysql.lib)"
         #MySQL服务器的libmysql.lib文件路径

DESTDIR = "../mysql/build"   #自定义保存驱动的文件夹



#PLUGIN_CLASS_NAME = QMYSQLDriverPlugin  # 把这个放到前面去了就可以了
#include(./qsqldriverbase.pri)



#在工程文件里用quote把路径包起来,就会忽略空格的

qsqldriverbase.pri

QT  = core core-private sql-private

# For QMAKE_USE in the parent projects.
#include($$shadowed($$PWD)/qtsqldrivers-config.pri)

include(./qsqldriverbase.pri)

PLUGIN_TYPE = sqldrivers
load(qt_plugin)

DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII

$$quote()的语法是为了去掉路径中的空格

INCLUDEPATH+="$$quote(C:/Program Files (x86)/MySQL/MySQL Server 5.5/include)"           #MySQL服务器的include目录
LIBS+="$$quote(C:/Program Files (x86)/MySQL/MySQL Server 5.5/lib/libmysql.lib)"

然后编译

在这里插入图片描述
在这里插入图片描述
虽然这里会报错,但是没有关系
在这里插入图片描述
这个是编译的目录结构

然后我把生成的编译成的文件输出到build里面去
在这里插入图片描述

需要拷贝一些文件到目录里

第一个需要做的 !!!

需要编译生成的把这个放到编译器里去
在这里插入图片描述

第二个 !!!

需要把MySQL的驱动文件放到编译器的bin目录里去

在这里插入图片描述

在这里插入图片描述

测试连接mysql的代码


#include <QtWidgets/QApplication>
#include <QtSql/QSqlDatabase>	// 连接数据库
#include <QtSql/QSqlError>		// 数据库连接失败打印报错语句
#include <QtSql/QSqlQuery>		// 数据库操作(增删改查)
#include <qmessagebox.h>
#include <QDebug>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("127.0.0.1");
    db.setPort(3306);
    db.setDatabaseName("test");
    db.setUserName("root");              //用户名
    db.setPassword("123456");            //密码 如果为空可以删除变为空字符串
    bool ok = db.open();
    if (ok)
    {
        qDebug() << "连接成功" ;
    }
    else
    {
         qDebug() << "连接失败" ;
    }

    return a.exec();
}



原理总结:划重点!!!!!!

1、Qt中没有自带的mysql数据库插件 qsqlmysql.dll 与 qsqlmysql.dll,需要到自带的mysql.pro中自行编译。

2、需要把生成mysql动态库拷贝至Qt编译器的bin目录下

如果有疑问请在评论区留言

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

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

相关文章

ModaHub魔搭社区:为什么选择Zilliz Cloud?

目录 Zilliz Cloud是什么&#xff1f; 为什么选择Zilliz Cloud&#xff1f; 基于Milvus构建&#xff0c;针对性能进行优化 弹性和可扩展 按需付费 多云支持&#xff08;AWS、GCP&#xff09; 云原生的可靠性 企业安全和治理 Zilliz Cloud基于Milvus的云原生服务 Zilliz…

深蓝学院C++基础与深度解析笔记 第 8 章 动态内存管理

第 8 章 动态内存管理 1. 动态内存基础 ● 栈内存 V.S. 堆内存 – 栈内存的特点&#xff1a;更好的局部性&#xff0c;用于语言的固有类型&#xff0c;对象自动销毁,由低到高开辟 – 堆内存的特点&#xff1a;运行期动态扩展&#xff0c;需要显式释放&#xff0c;由高到低开辟…

使用 TailwindCSS 中的 color-mix() 构建自定义调色板

在这篇文章中&#xff0c;我们将了解如何使用 CSS 函数color-mix()和 CSS 变量&#xff0c;通过 TailwindCSS 高效地为 Nuxt 应用程序生成自定义调色板。 先决条件 最好使用以下命令设置 Nuxt 应用程序&#xff1a; npx nuxi init tailwindcss-color-mix 在安装提示期间选择 …

新项目即将启动!小灰做个市场调研

熟悉小灰的小伙伴们都知道&#xff0c;在2019年初&#xff0c;做了整整10年程序员的小灰离开职场&#xff0c;成为了一名自由职业者。 2021年末&#xff0c;小灰注册了自己的公司&#xff0c;名为北京小灰大黄科技有限公司。 公司虽然注册了&#xff0c;但是整个公司只有小灰一…

【C2】文件,时间,多线程,动静态库

文章目录 1.文件&#xff1a;fprint/fgets/fwrite/fread&#xff0c;ftell/rewind/fseek/fflush1.1 文本文件&#xff1a;FILE结构体1.2 二进制文件&#xff1a;没有行概念1.3 文件定位&#xff1a;linux下文本文件模式和二进制文件模式没有区别。fgets和fprintf以行方式读写文…

【Flutter】Flutter 国际化入门 使用 intl 包 格式化日期

文章目录 一、 前言二、 版本信息三、 什么是 intl 包四、 如何安装和使用 intl 包1. 安装 intl 包2. 使用 intl 包进行基本的日期和数字格式化3. 使用 intl 包进行消息翻译 五、 一个简单的使用示例六、 总结 一、 前言 在全球化的今天&#xff0c;为你的 Flutter 应用添加国…

快速上手MATLAB图像处理:100种项目全覆盖

本教程涵盖了MATLAB图像处理的广泛内容。我们学习了图像读取、显示和保存,图像的基本操作(如缩放、裁剪、旋转和翻转),以及图像的基本增强(如亮度调整、对比度调整和颜色空间转换)。本教程还介绍了常见的图像滤波技术(如均值滤波、中值滤波和高斯滤波),图像的直方图均…

JAVA临时文件的使用

目录 什么是临时文件&#xff1f; 临时文件在编程中有各种妙用 java在缓存目录创建临时文件的方式 1 按照指定文件名随机数字共同作为文件名创建 2 按照指定文件名创建 3 通过获取临时文件夹的真实路径 什么是临时文件&#xff1f; 临时文件是在计算机系统中用于临时存储数…

Spring Cloud - Gateway统一网关、断言工厂、过滤器工厂、全局过滤器、跨域问题

目录 一、什么是网关&#xff1f;为什么选择 Gateway? 二、Gateway 网关 2.1、搭建网关服务 1.创建新的module&#xff0c;引入SpringCloudGateway的依赖和nacos的服务发现依赖 2.编写nacos地址和路由配置 2.2、路由断言工厂PredicateFactory 2.3、路由过滤器 GatewayF…

2015年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题——纯享题目版

&#x1f3e0;个人主页&#xff1a;fo安方的博客✨ &#x1f482;个人简历&#xff1a;大家好&#xff0c;我是fo安方&#xff0c;考取过HCIE Cloud Computing、CCIE Security、CISP、RHCE、CCNP RS、PEST 3等证书。&#x1f433; &#x1f495;兴趣爱好&#xff1a;b站天天刷&…

如何删除Git仓库中的敏感文件及其历史记录

本文主要介绍如何使用 git filter-branch 命令删除 Git 仓库中的敏感文件及其历史记录。在 Git 中&#xff0c;我们通常会将敏感信息(如密码、私钥等)存储在 .gitignore 文件中&#xff0c;以防止这些信息被意外提交到仓库。有时候&#xff0c;因为疏忽或私有仓库转公开仓库&am…

SQL15 查看学校名称中含北京的用户

SELECT device_id,age,university FROM user_profile WHERE university LIKE %北京%下划线 代表匹配任意一个字符&#xff1b; % &#xff1a;百分号 代表匹配0个或多个字符&#xff1b; []: 中括号 代表匹配其中的任意一个字符&#xff1b; [^]: ^尖冒号 代表 非&#xff0c;取…

CRM系统通过哪三步增加销售团队协作?

销售团队的协作是企业成功的重要保障。协调一致的销售团队能够提升销售效率&#xff0c;提高销售转化&#xff0c;获得更多业绩收入。那么企业要如何增加销售团队的协作&#xff1f;可以用CRM销售管理系统。 CRM系统如何增加销售团队协作&#xff1a; 1、建立统一的客户数据库…

SAP ABAP 如果某字段没有参数ID,如自开发程序使用的自建表 新建参数ID

1&#xff09;新建参数ID sm30 TPARA 维护 输入ID和描述 2&#xff09; 参数ID和Se11数据元素 绑定

【EasyX】扫雷

目录 扫雷1. 主体功能描述2、主要实现步骤3、效果图 扫雷 本博客介绍利用EasyX加上图片、音乐素材实现一个传统的扫雷小游戏。 1. 主体功能描述 1、全局变量&#xff1a;时间、地图、图片资源、状态&#xff1b; 2、绘图初始化函数drawinit&#xff1a;载入图片资源&#xf…

力扣 701. 二叉搜索树中的插入操作

题目来源&#xff1a;https://leetcode.cn/problems/insert-into-a-binary-search-tree/description/ 思路&#xff1a;只要根据二叉搜索树的特性&#xff0c;将新插入节点的值不断地与树节点值进行比较&#xff0c;然后找到新节点所属的叶子节点位置&#xff0c;插入即好&…

Jetson Nano供电

1.Jetson Nano供电 Jetson Nano开发板有5种供电方式&#xff1a; 5V 2A(micro USB) 5V 3A(GPIO引脚) 5V 4A(DC接口) 5V 6A(所有电源IO反向供电) POE供电 其中&#xff0c; 5V 2A是受限于USB自身&#xff0c;强烈推荐DC 4A供电&#xff0c;满足Jetson Nano大部分使用场景&…

Linux基础_2

目录 一、获取帮助 1、whatis 2、查看命令的帮助 内部命令 外部命令 3、man命令 作用&#xff1a;提供命令帮助的文件 4、info命令 作用&#xff1a;常用于命令参考&#xff0c;GNU工具&#xff0c;适合通用文档参考 5、Linux安装提供的本地文档获取帮助 Applicatio…

ES6的类 vs TypeScript的类:解密两种语言中的面向对象之争

文章目录 ES6 类ES6 类的常见特性1. 构造函数2. 实例方法3. 静态方法4. 继承 TypeScript 类TypeScript 类的特性1. 类型注解2. 访问修饰符3. 类型推断4. 接口实现 ES6 类 ES6&#xff08;ECMAScript 2015&#xff09;引入了类的概念&#xff0c;为 JavaScript 增加了面向对象编…