数据库的连接形式可以通过cmd查看

1.获取 UI 输入的连接参数

// 获取主机名(如"localhost"或IP地址)
QString hostStr = hostEdit->text();  // 从hostEdit控件获取文本
QByteArray hostBa = hostStr.toUtf8();  // 转换为UTF-8编码的字节数组
const char* host = hostBa.constData();  // 转换为C风格字符串(const char*)// 同理获取用户名、数据库名、密码
QString userStr = userEdit->text();
QByteArray userBa = userStr.toUtf8();
const char* user = userBa.constData();QString databaseStr = databaseEdit->text();
QByteArray databaseBa = databaseStr.toUtf8();
const char* database = databaseBa.constData();QString passwordStr = passwordEdit->text();
QByteArray passwordBa = passwordStr.toUtf8();
const char* password = passwordBa.constData();// 获取端口号(转换为整数,MySQL默认端口3306)
int port = portEdit->text().toInt();

2.初始化 MySQL 连接句柄

MYSQL* conn = mysql_init(NULL);  // 初始化连接句柄
if (!conn) {  // 初始化失败(如内存不足)addLog("MySQL初始化失败", LogLevel::Error);  // 记录错误日志return nullptr;  // 返回空指针表示失败
}
addLog("MySQL初始化成功", LogLevel::Info);  // 初始化成功,记录信息日志

3. 建立数据库连接

if (!mysql_real_connect(conn, host, user, password, database, port, NULL, 0)) {// 连接失败:获取错误信息并记录日志addLog(QString("连接数据库失败: %1").arg(mysql_error(conn)), LogLevel::Error);mysql_close(conn);  // 关闭已初始化的连接句柄(释放资源)return nullptr;  // 返回空指针表示失败
}
addLog("成功连接到MySQL数据库", LogLevel::Info);  // 连接成功,记录日志
return conn;  // 返回有效的连接句柄
  • mysql_real_connect()参数说明:

    • conn:已初始化的连接句柄(mysql_init()的返回值)
    • host:MySQL 服务器主机名 / IP(如 "localhost")
    • user:登录用户名(如 "root")
    • password:登录密码
    • database:要连接的数据库名(可选,可后续通过mysql_select_db()切换)
    • port:端口号(MySQL 默认 3306)
    • 最后两个参数:通常为NULL0(分别表示 Unix 套接字和客户端标志)
  • 连接失败处理:

    • mysql_error(conn)获取具体错误信息(如 “访问被拒绝”“主机不可达” 等)。
    • 调用mysql_close(conn)释放已初始化的连接句柄,避免资源泄漏。
    • 返回nullptr表示连接失败。
  • 连接成功:返回有效的MYSQL*句柄,后续可通过该句柄执行 SQL 语句(如mysql_query())。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML 设计与使用入门

HTML 设计与使用入门 一、完整示例&#xff08;基础页面模板&#xff09;这是一个结构清晰、可直接拷贝运行的最小 HTML 模板&#xff1a;<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"utf-8"><meta name"vie…

Gradio全解11——Streaming:流式传输的视频应用(2)——Twilio:网络服务提供商

Gradio全解11——Streaming&#xff1a;流式传输的视频应用&#xff08;2&#xff09;——Twilio&#xff1a;网络服务提供商11.2 Twilio&#xff1a;网络服务提供商11.2.1 Twillo穿透服务与TURN服务器1. 什么是STUN、TURN和ICE&#xff1f;2. Twilio介绍及网络穿透服务3. Twil…

【更新至2024年】2009-2024年各地级市金融科技水平数据

【更新至2024年】2009-2024年各地级市金融科技水平数据 1、时间&#xff1a;2009-2024年 2、来源&#xff1a;天眼查 3、指标&#xff1a;年份、省份、地级市、地级市代码、当年新注册金融科技公司数量、累计注册金融科技公司数量、金融科技水平 4、范围&#xff1a;地级市…

一般软件加载显示图片的流程

目录 1、一般图片浏览软件的流程&#xff08;Qt 或类似框架&#xff09;&#xff1a; 1️⃣ 读取原始数据 2️⃣ 解析图片格式 3️⃣ 存储到内部可用的绘制对象 4️⃣ 显示到界面 ✅ 总结 2、那什么叫“QPixmap 在 Qt 里就是“显示专用的像素缓存”&#xff0c;不是原始…

【论文阅读】REFRAG:一个提升RAG解码效率的新思路

引言 看到一则报道[1]&#xff0c;重组后的Meta实验室在9月1号发布了一篇关于提升RAG解码效率的论文&#xff0c;提出的思路有点启发作用&#xff0c;于是把原文下载下来仔细看下。 论文标题&#xff1a;REFRAG: Rethinking RAG based Decoding 论文地址&#xff1a;https://ar…

QT M/V架构开发实战:QFileSystemModel介绍

目录[TOC](目录)前言一、QFileSystemModel初步介绍二、基本功能1.创建2.基本属性与方法三、示例&#xff08;简单的文件浏览器&#xff09;四、性能注意事项前言 本文主要介绍的是使用代码生成的情况下对控件的介绍&#xff0c;包括拥有的功能及能修改的样式&#xff0c;也会说…

视频生成迎来效率革命!字节提出视频生成稀疏注意力机制,计算量降20倍,速度升17.79倍!

论文链接&#xff1a;https://arxiv.org/pdf/2509.01085亮点直击BSA——一种可训练的双向动态稀疏注意力框架&#xff0c;该框架首次在视频扩散训练中对全注意力机制中的查询&#xff08;Query&#xff09;及键值对&#xff08;Key-Value&#xff09;进行正交稀疏化处理以加速训…

STM32HAL库_cubeMX

ADC简介STM32f103的是12位逼近型ADC代码连续非扫描模式&#xff08;1个通道&#xff09;1&#xff1a;校准ADC&#xff08;这个可要可不要&#xff09;2&#xff1a;ADC初始化3&#xff1a;配置ADC通道&#xff08;这个函数只有一个通道时就是可要可不要&#xff09;4&#xff…

【Qt】清空QDateTimeEdit

代码 ui->startDate->setSpecialValueText(" "); //这里是空格 ui->startDate->setMinimumDate(QDate(2024, 1, 1)); ui->startDate->setDate(QDate::fromString("2024-01-01", "yyyy-MM-dd"));原理 设置特殊值显示文本&#…

LiTS 2017 datasets

下载记录 论文地址&#xff1a;https://doi.org/10.1016/j.media.2022.102680 官方下载链接&#xff1a;https://competitions.codalab.org/competitions/17094 进入链接后&#xff0c;需要先注册才能拿到下载点击Train data下面的Mirro1&#xff0c;在google云盘会看到Trai…

kafka3.8集群搭建

kafka集群需要三台机器搭建&#xff0c;并使用内置zookeeperIP10.0.0.110.0.0.210.0.0.3安装jdk # ubuntu sudo apt install -y openjdk-8-jdk-headless # centos sudo yum install -y java-1.8.0-openjdk下载kafka wget https://archive.apache.org/dist/kafka/3.8.1/kafka_2…

从15kHz 到20MHz:为什么LTE带宽不能被子载波间隔整除?

从 15 kHz 到 20 MHz&#xff1a;为什么 LTE 带宽不能被子载波间隔整除&#xff1f; 1. 引言 在 LTE 系统中&#xff0c;子载波间隔被固定为 15 kHz&#xff0c;而系统带宽却被设计为 1.4、3、5、10、15、20 MHz 六个档位。乍一看&#xff0c;这些带宽似乎无法被 15 kHz 整除&a…

html css js网页制作成品——HTML+CSS娃娃店网页设计(4页)附源码

目录 一、👨‍🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML

【计算机网络 | 第15篇】动态主机配置协议

文章目录为何需要DHCP&#xff1f;手动配置的痛点&#x1f914;DHCP的基本工作模式&#x1f95d;DHCP的核心功能&#xff1a;IP地址的动态管理&#x1f95d;租用期的特点租用期的管理机制DHCP四步工作流程&#xff1a;从“发现”到“绑定”&#x1f426;‍&#x1f525;中继代理…

嵌入式系统内存分段核心内容详解

一、嵌入式内存分段整体规则&#xff08;按地址从低到高&#xff09;嵌入式系统内存按 “功能 属性” 划分为 6 个核心段&#xff0c;地址从低到高依次分布&#xff0c;各段职责与存储对象明确&#xff0c;具体规则如下表&#xff1a;地址范围段类型&#xff08;Segment&#…

开发避坑指南(45):Java Stream 求两个List的元素交集

需求 java 中如何用stream求两个List元素的交集&#xff1f; 代码实现 直接上代码 public class ListTest {public static void main(String[] args) {List<Integer> list1 new ArrayList<>();list1.add(1);list1.add(2);list1.add(3);List<Integer> list2 …

gitlab流水线与k8s集群的联通

gitlab流水线与k8s集群的连接&#xff0c;首先是通过gitlab-ci.yml文件中的命令&#xff0c;通过runner执行器实例运行对应的kubectl命令实现的。 那么runner执行器实例执行器如何执行kubectl命令&#xff0c;执行环境的配置&#xff0c;kubectl命令如何与k8s集群互认&#xff…

【Linux】常用命令速查表

Linux 常用命令速查表查看进程内存映射pmap -x <pid> # 查看进程的内存映射信息查看系统架构uname -m # 查看操作系统架构&#xff08;x86_64 / arm64 等&#xff09;磁盘与文件du -sh /home/* # 查看 /home 下每个用户目录的大小&#x…

Windows下编译SLEPc

本文记录在Windows下编译SLEPc的流程。 零、环境 操作系统Windows 11VS Code1.92.1MSYS2msys2-x86_64-20250830 一、安装依赖 1.1、依赖 首先&#xff0c;下载并安装MSYS2&#xff0c; 打开MSYS2 MINGW64控制台&#xff0c;运行以下命令安装依赖包&#xff0c; pacman -S …

运动生理实验室解决方案 人体生理实验整体解决方案

&#xff08;一&#xff09;、硬件参数 集成化折叠式无创型生理实验平台&#xff1a;1.1、 集成化设计:至少包含设备操作台、可收纳式交互实验桌、可收纳式检查床、生物信号 采集处理系统、计算机工作站集成于一体的高度集成设计&#xff1b;&#xff08;o561-6o623…