华为云征文|Flexus云服务X实例安装ODBC驱动,在ODBC中建立MySQL数据库连接,通过QT连接云数据库

引出


4核12G-100G-3M规格的Flexus X实例使用测评第2弹:Flexus云服务X实例安装ODBC驱动,在ODBC中建立MySQL数据库连接,通过QT连接云数据库

什么是Flexus云服务器X实例

官方解释:

Flexus云服务器X实例是新一代面向中小企业和开发者打造的柔性算力云服务器,可智能感知业务负载,适用于电商直播、企业建站、开发测试环境、游戏服务器、音视频服务等中低负载场景。相较于Flexus应用服务器L实例,Flexus云服务器X实例的优势包含:提供丰富的公共镜像、可灵活自定义vCPU内存配比、智能感知业务动态升降配,负载范围更高等。

连接本地MySQL

1.首先下载MySQL的ODBC驱动

MySQL :: Download Connector/ODBC

首先在MySQL的官网上下载ODBC,我这里选择第一个,64位的安装包;

下载完成后,点击运行,进行ODBC的安装

2.启动运行,创建用户数据源

通过控制台命令启动ODBC数据源管理程序,添加ODBC ANSI 驱动;注意这里的datasourcename需要用到!!!

java 复制代码
cd \Windows\SysWOW64
odbcad32.exe

注意这里的Data Source Name 后面在qt中需要用到

点击test,测试连接是否成功

注意上面的Data Source Name 在后面的qt中建立Mysql连接时需要用到;

补充:ANSI 版和 Unicode 版

ODBC(开放数据库连接)驱动程序有两种版本:ANSI 版和 Unicode 版。它们之间的主要区别在于它们处理字符串数据的方式。

  1. ANSI 版 ODBC
  • 字符编码:ANSI 版 ODBC 使用本地操作系统的默认字符编码。例如,在 Windows 上,它通常使用 Windows-1252 或其他基于系统区域设置的编码。
  • 函数后缀 :ANSI 版 ODBC 函数通常以 A 结尾。例如,SQLConnect 的 ANSI 版本是 SQLConnectA
  • 字符类型 :ANSI 版 ODBC 函数使用 char 类型来处理字符串。
  • 兼容性:适用于那些只需要处理单字节字符集(SBCS)或双字节字符集(DBCS)的应用程序。
  1. Unicode 版 ODBC
  • 字符编码:Unicode 版 ODBC 使用宽字符编码(例如 UTF-16)。这使得它能够处理多种语言和字符集。
  • 函数后缀 :Unicode 版 ODBC 函数通常以 W 结尾。例如,SQLConnect 的 Unicode 版本是 SQLConnectW
  • 字符类型 :Unicode 版 ODBC 函数使用 wchar_t 类型来处理字符串。
  • 兼容性:适用于需要处理多字节字符集(MBCS)和各种语言的应用程序。

比较与选择

选择使用 ANSI 版还是 Unicode 版 ODBC 取决于你的应用程序的需求:

  • 字符集需求:如果你的应用程序只需要处理 ASCII 或单字节字符集,ANSI 版可能就足够了。如果需要处理多语言或多字符集,Unicode 版是更好的选择。
  • 兼容性:某些老旧的系统和数据库可能仅支持 ANSI 版 ODBC。如果你的应用程序需要与这些系统兼容,使用 ANSI 版可能会更好。
  • 国际化:如果你的应用程序需要国际化支持(如处理不同语言的字符),建议使用 Unicode 版。

3.qt代码连接

java 复制代码
    connect(ui->pushButton_2,&QPushButton::clicked,this,[=](){
        // 使用ODBC驱动
        QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
        db.setHostName("127.0.0.1"); // 云数据库的主机地址
        db.setPort(3306); // 端口
        db.setDatabaseName("mydatasource"); // 数据库名称
        db.setUserName("root"); // 用户名
        db.setPassword("123"); // 密码
        bool ok = db.open();
        qDebug() << ok;
        if (!ok) {
            qDebug() << "Database error occurred:" << db.lastError().text();
        }

        qDebug() << QSqlDatabase::drivers();
    });

如何连接华为云服务器中的MySQL

1.在Centos中安装Linux版本的ODBC驱动

通过以下命令安装Linux版本的ODBC驱动

java 复制代码
sudo yum install mysql-connector-odbc

报错解决方案一:改check为 0 ,但是没有生效,估计是没有把这个文件重新载入??

java 复制代码
vim /etc/yum.repos.d/epel.repo

解决方案2:执行命令后面加入参数--nogpgcheck,忽略检查

java 复制代码
sudo yum install mysql-connector-odbc --nogpgcheck

如果遇到报错可以忽略检查,就可以安装成功

2.在ODBC连接管理器中建立和华为云的链接

和本地MySQL的链接类似,这里需要先通过ODBC建立和华为云中数据库的连接;然后QT访问ODBC,进而对云数据库进行相关操作

3.qt代码通过ODBC连接华为云

java 复制代码
connect(ui->pushButton,&QPushButton::clicked,this,[=](){
        qDebug() << "\n======进行数据库的链接====";

        QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); // 使用 QMYSQL 驱动
        db.setHostName(""); // 云数据库的主机地址
        db.setPort(3306); // 端口
        db.setDatabaseName("huawei"); // 数据库名称
        db.setUserName("root"); // 用户名
        db.setPassword(""); // 密码

        if (!db.open()) {
            qDebug() << "Database error occurred:" << db.lastError().text();
            return;
        }

        qDebug() << "连接成功";

    });

报错解决

报错:QSqlDatabase: ODBC driver not loaded,这里是写错了

报错解决:Access denied for user 'root@localhost'

这里我们需要修改权限,允许其他ip通过root用户访问MySQL

java 复制代码
 update user set Host='%' where User='root';
java 复制代码
flush privileges;
flush hosts;

总结

4核12G-100G-3M规格的Flexus X实例使用测评第2弹:Flexus云服务X实例安装ODBC驱动,在ODBC中建立MySQL数据库连接,通过QT连接云数据库

相关推荐
Lyra_Infra7 分钟前
从 MySQL 到达梦:一次信创隔离环境里的数据库迁移踩坑实录
数据库·后端·mysql
数据工匠老o7 分钟前
sysbench/TPC-C/自定义脚本:数据库压测工具对比与实战流程
数据库·测试
数安3000天41 分钟前
数据分类分级产品有哪四类技术路线?
大数据·数据库
泡茶喝茶写代码43 分钟前
量化数据开发实战系列(第 25 篇):基金基础接口实战:基金列表、ETF-LOF 分类、基金概况、净值数据
java·数据库·人工智能·python·mysql
张小姐的猫1 小时前
【AI大模型接入SDK】 —— 数据管理 & 与Session模块进行联动
数据结构·数据库·c++·人工智能·python·chatgpt
月落汀兰1 小时前
从需求到上线:华为云搭建高可用 Web 站点,ECS/RDS/ELB/AS 组件协同实践
华为云·云计算
月落汀兰1 小时前
云上故障怎么排查?华为云 IAM 权限、CES 监控、LTS 日志、CTS 审计完整指南
华为云·云计算
IvorySQL1 小时前
PostgreSQL 日报|大模型破解在线校验和(9 月 15 日)
数据库·人工智能·postgresql
Leon-Ning Liu2 小时前
Oracle 19c ASMB 进程 PGA 内存泄漏排查实战 (Bug 38610635)
数据库·oracle
步行cgn2 小时前
Spring 注入 null 和空字符串详解
数据库·spring·oracle