Qt连接MySql数据库(本地和远程数据库均可)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 三种方法
  • 方法一 略
  • 方法二 使用ODBC设置mysql为数据源库
    • 1. 添加ODBC数据源,在控制面板中找到管理工具,其中有ODBC数据源 64位的,打开后添加
    • 2 . 如果数据源没有Mysql,需要安装mysql的ODBC驱动程序[http://dev.mysql.com/downloads/connector/odbc/5.1.html](http://dev.mysql.com/downloads/connector/odbc/5.1.html)
    • 3. 选择 unicode的编码格式.MYSQL Connector/ODBC 提供了两个版本,一个是 ANSI driver 和 Unicode driver 两个版本。
    • 4. 填写数据库的连接信息。ip为指定主机的Mysql数据库。此处也可以用本地。
    • 5.Qt测试数据库是否连接成功
    • 6.Linux下配置Mysql的odbc驱动


原文链接:https://blog.csdn.net/YanWenCheng_/article/details/116567098

三种方法

  • 一、自己编译Qt 的MySQL数据库驱动插件(需要装MySQL的开发库)
  • 二、使用ODBC设置mysql为数据源库(后面有Linux配置方法)
  • 三、使用ODBC设置DSN连接MySql(方法二的另一种简单形式,推荐)

方法一 略

方法二 使用ODBC设置mysql为数据源库

注意:如果是远程的数据库(本地忽略此步骤)。先用工具测试是否能成功连接linux上Mysql数据库。连接不上还谈什么Qt下测试或者开发。如下
在这里插入图片描述
在这里插入图片描述
若出现无法连接的情况尝试 vim /etc/mysql/mysql.conf.d/mysqld.cnf 注释掉下面这句话,让其不要只绑定他自己的主机并设置mysql配置表格,然后重启 sudo systemctl restart mysql.service。
在这里插入图片描述
在装有MySQL的机器上登录MySQL mysql -u root -p密码
执行use mysql;
执行update user set host = ‘%’ where user = ‘root’;这一句执行完可能会报错,不用管它。
执行FLUSH PRIVILEGES;

成功后进行下面的的配置。

1. 添加ODBC数据源,在控制面板中找到管理工具,其中有ODBC数据源 64位的,打开后添加

在这里插入图片描述

在这里插入图片描述

2 . 如果数据源没有Mysql,需要安装mysql的ODBC驱动程序http://dev.mysql.com/downloads/connector/odbc/5.1.html

在这里插入图片描述

3. 选择 unicode的编码格式.MYSQL Connector/ODBC 提供了两个版本,一个是 ANSI driver 和 Unicode driver 两个版本。

Unicode driver 版本提供了更多字符集的支持,也就是提供了多语言的支持。而ANSI driver 版本是只针对有限的字符集的范围。
在这里插入图片描述

4. 填写数据库的连接信息。ip为指定主机的Mysql数据库。此处也可以用本地。

在这里插入图片描述

5.Qt测试数据库是否连接成功

#include "mainwindow.h"
#include <QSqlDatabase>
#include <QSqlQuery>
#include<QDebug>
#include <QApplication>
#include <QSqlError>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    qDebug()<<QSqlDatabase::drivers();
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    //db.setHostName("127.0.0.1");  //此处测试了下,用127.0.0.1,和远程的192.168.137.131.都使用的是ODBC配置的数据源地址。所有此函数不起作用。
    db.setPort(3306);
    db.setDatabaseName("MySQL");
    db.setUserName("root");
    db.setPassword("123456");
    if (!db.open())
       qDebug()<<"can't open!"<<db.lastError();
    else
         qDebug()<<"open!";
    QSqlQuery result = db.exec("select user from user;");   //注意,因为上面ODBC数据源配置时选择的是mysql这个自带系统库,所有可以访问user这个表。
    while (result.next())
        qDebug() << result.value("user").toString();
    return a.exec();
}

在这里插入图片描述

6.Linux下配置Mysql的odbc驱动

  1. apt search unixodbc //找到odbc的开发包并安装
    在这里插入图片描述
    2.安装Mysql的odbc驱动** https://dev.mysql.com/downloads/connector/odbc/(全装)
    3.ldd 查看一些Qt目录下odbc.so检查一下缺少那些库并安装一下。
    4.使用方法三的代码检测一下。

方法三、使用ODBC设置DSN连接MySql**(*方法二的另一种简单形式,推荐)
mysql的odbc驱动还是得装的

#include "mainwindow.h"
#include <QSqlDatabase>
#include <QSqlQuery>
#include<QDebug>
#include <QApplication>
#include <QSqlError>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    qDebug()<<QSqlDatabase::drivers();
    QString dsn = "Driver={MySQL ODBC 8.0 UniCode Driver};"; // Driver is now {MySQL}
        dsn.append("Server=192.168.137.131,3306;"); // IP,Port
        dsn.append("Database=mysql;");  // Schema
        dsn.append("Uid=root;");           // User
        dsn.append("Pwd=123456;");
        dsn.append("MULTI_HOST=1;");

    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    db.setDatabaseName(dsn);
//    db.setUserName("root");
//    db.setPassword("123456"); //次数设置密码和DSN直接写账号密码效果一样
    if (!db.open())
       qDebug()<<"can't open!"<<db.lastError();
    else
         qDebug()<<"open!";
    QSqlQuery result = db.exec("select user from user;");
    while (result.next())
        qDebug() << result.value("user").toString();

    return a.exec();
}

方法二参考了一些文章:

https://blog.csdn.net/qq_42564908/article/details/113033106
https://blog.csdn.net/masibuaa/article/details/8653841
https://blog.csdn.net/seven_dj/article/details/25353173?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-4.vipsorttest&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-4.vipsorttest

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数字孪生与元宇宙:数字化科技的双向融合之路

概念 &#xff08;1&#xff09;元宇宙&#xff08;Metaverse&#xff09;是一个虚拟的三维世界&#xff0c;由数字内容和物理世界中的现实空间相互交织而成&#xff0c;能够提供各种虚拟体验&#xff0c;例如虚拟现实、增强现实、虚拟社交、虚拟经济等。在元宇宙中&#xff0…

8种不同类型的防火墙

什么是防火墙&#xff1f; 防火墙是一种监视网络流量并检测潜在威胁的安全设备或程序&#xff0c;作为一道保护屏障&#xff0c;它只允许非威胁性流量进入&#xff0c;阻止危险流量进入。 防火墙是client-server模型中网络安全的基础之一&#xff0c;但它们容易受到以下方面的…

连ChatGPT都不懂的五一调休,到底怎么来的?

今天是周几&#xff1f; 你上了几天班了&#xff1f; 还要上几天班放假&#xff1f; 五一啥安排&#xff1f; 出行的票抢到了吗&#xff1f; 调休到底是谁发明的&#xff1f;&#xff01; 五一劳动节是要劳动吗&#xff1f; 为什么昨天是周一&#xff0c;今天还是周一&a…

差分优化算法——DE

&#x1f34e;道阻且长&#xff0c;行则将至。&#x1f353; 目录 一、DE1.步骤2.特点 二、DE Optimiza1.函数最小值问题2.差分进化算法求解2.Java 实现与结果绘图 一、DE 差分进化算法是一种基于群体智能的优化算法&#xff0c;由Storn和Price于1995年提出&#xff0c;最早用…

基于DSP+FPGA+ADS1282支持32Bit高精度数据采集方案(三)系统性能测试

系统性能分析与测试 本章将首先对系统电路的噪声和温漂进行分析&#xff0c;而后对采集系统的性能进行 测试&#xff0c;并对测试数据进行分析。 5.1 高精度 AD 转换电路噪声和温漂分析 5.1.1 电阻噪声与温漂 1 、电阻的噪声 电阻是一种噪声源&#xff0c;其严重程度取…

嵌入式就业怎么样?

嵌入式就业怎么样? 现在的IT行业,嵌入式是大热门&#xff0c;下面也要来给大家介绍下学习嵌入式之后的发展以及就业怎么样。 首先是好找工作。嵌入式人才目前是处于供不应求的状态中&#xff0c;据权威统计机构统计在所有软件开发类人才的需求中&#xff0c;对嵌入式工程师的…

matlab 点云滤波(中值、均值、高斯滤波)代码

点云中值、均值、高斯滤波 介绍一下滤波函数 smoothdata: 对含噪数据进行平滑处理 B smoothdata(___,method) 为上述任一语法指定平滑处理方法。例如&#xff0c;B smoothdata(A,sgolay) 使用 Savitzky-golay 滤波器对 A 中的数据进行平滑处理。Method-平滑处理方法 "…

Springboot获取jar包中resources资源目录下的文件

阿萨斯多问题现象&#xff1a; 今天在项目中遇到一个业务场景&#xff0c;需要用到resources资源目录下的文件&#xff0c;然后就在思考一个问题&#xff1a; 当项目打成jar后&#xff0c;Springboot要如何获取resources资源目录下的文件呢&#xff1f; 问题分析&#xff1a; 如…

GitLABJenkins

GitLAB & Jenkins 目录 实践&#xff1a;基于Jenkins提交流水线(测试成功)-2023.4.25 目的&#xff1a;掌握通过触发器将GitLab和Jenkins集成&#xff0c;实现提交流水线。 1、触发Jenkins构建 安装Generic Webhook Trigger插件 重启后&#xff0c;进入一个Pipeline项目设…

用Java创建可扩展的OpenAI GPT应用程序

ChatGPT 值得深入使用的方面之一是它的引擎&#xff0c;它不仅为基于Web的聊天机器人提供动力&#xff0c;还可以集成到Java应用程序中。 ▌Budget Journey App 想象一下&#xff0c;你想去一个城市旅行并且设置好了预算&#xff0c;你应该如何分配你的钱并让你的旅行难忘&am…

实例分割算法BlendMask

实例分割算法BlendMask 论文地址&#xff1a;https://arxiv.org/abs/2001.00309 github代码&#xff1a;https://github.com/aim-uofa/AdelaiDet 我的个人空间&#xff1a;我的个人空间 密集实例分割 ​ 密集实例分割主要分为自上而下top-down与自下而上bottom-up两类方法…

一种用于地灾边坡大坝安全深度位移监测测斜仪

1用途 固定测斜仪广泛适用于测量土石坝、面板坝、岩土边坡、路堤、基坑、岩石边坡等结构物的水平位移、垂直沉降及滑坡&#xff0c;固定测斜仪配合测斜管可反复使用&#xff0c;并方便实现测量数据的自动采集。 固定测斜仪采用的是耐冲击型倾斜传感器&#xff0c;可靠性好&am…

15天学习MySQL计划-锁(进阶篇)-第十天

15天学习MySQL计划-锁&#xff08;进阶篇&#xff09;-第十天 锁 1.概述 1.介绍 ​ 锁是计算机协调多个进程或线程并发访问某个资源的机制。数据库中&#xff0c;除传统的计算资源&#xff08;cpu&#xff0c;ram&#xff0c;i/o&#xff09;的争用以外&#xff0c;数据也是…

对数据结构的初步认识

前言: 牛牛开始更新数据结构的知识了.本专栏后续会分享用c语言实现顺序表,链表,二叉树,栈和队列,排序算法等相关知识,欢迎友友们互相学习,可以私信互相讨论哦! &#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏: &#x1f354;&#x1f35f;&a…

使用 vscode 安装配置 clang-format(代码格式化)

目前&#xff0c;网上能找到的配置教程都是乱教的。他们以C为语言讲配置&#xff0c;其实clang-format默认就是C.所以他们在配置时&#xff0c;即是错了。也会以默认C格式化&#xff0c;也不会提示配置错误。结果他们还不知道他们错在哪&#xff1f;如果让他们配置.CS, .json&a…

23种设计模式之观察者模式(黑马程序员)

观察者模式 一、概述二、结构三、实现四、总结在最后 一、概述 观察者模式又被称为发布-订阅模式(Publish/Subscribe)模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时&#xff0c;会通知所有…

中级软件设计师备考---操作系统和计算机网络

【因为我自己是软件工程专业毕业的学生&#xff0c;所以408里的这两门课都比较熟悉&#xff0c;因此这一部分只放一些我印象不是完全深刻的知识。】 目录 操作系统前驱图与PV操作死锁的预防与避免绝对路径和相对路径缺页中断的某种练习题 计算机网络网络规划与设计特殊含义的I…

【FFTW库】编译生成 x86、arm 环境下的FFTW库

FFTW是一个快速计算离散傅里叶变换的标准C语言程序集&#xff0c;可计算一维或多维实和复数据以及任意规模的DFT。下面主要介绍的是 x86 环境下 FFTW库的编译过程&#xff0c;arm环境下的编译过程和FFTW类似&#xff0c;不同之处在于需要手动指定 编译环境 和 编译器。 FFTW有…

2023年五月份图形化一级打卡试题

活动时间 从2023年5月1日至5月21日&#xff0c;每天一道编程题。 本次打卡的规则如下&#xff1a; 小朋友每天利用10~15分钟做一道编程题&#xff0c;遇到问题就来群内讨论&#xff0c;我来给大家答疑。 小朋友做完题目后&#xff0c;截图到朋友圈打卡并把打卡的截图发到活动群…

OkHttp3源码解析 - 连接机制和缓存机制

系列文章目录 第一章 OkHttp3源码解析 - 请求流程 第二章 OkHttp3源码解析 - 拦截器 第三章 OkHttp3源码解析 - 连接机制和缓存机制 文章目录 系列文章目录前言一、连接机制1.1 创建连接1.2 连接池 二、缓存机制2.1 缓存策略2.2 缓存管理 彩蛋致谢 前言 本文基于okhttp3.12.1…