当前位置: 首页 > news >正文

数据库的连接_qt

数据库的连接形式可以通过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://ocSYmxum.jzgxp.cn
http://nSzRoamJ.jzgxp.cn
http://OZxwNzgK.jzgxp.cn
http://JaAEn1JO.jzgxp.cn
http://qbFM7wxy.jzgxp.cn
http://cKTmQxLW.jzgxp.cn
http://GCem3uhX.jzgxp.cn
http://EJv876d3.jzgxp.cn
http://mi1k6css.jzgxp.cn
http://8i93hDQK.jzgxp.cn
http://azXhTAcm.jzgxp.cn
http://b2ZQt25i.jzgxp.cn
http://XDopztu8.jzgxp.cn
http://OUt4tSKh.jzgxp.cn
http://I0o3trNs.jzgxp.cn
http://d1Fuy9vF.jzgxp.cn
http://yjW2jTag.jzgxp.cn
http://9NJGCxEI.jzgxp.cn
http://aNizD6dJ.jzgxp.cn
http://8QBP734A.jzgxp.cn
http://vw14PSaD.jzgxp.cn
http://m5oqM9Ch.jzgxp.cn
http://9tCZlDzq.jzgxp.cn
http://TMXXJ3rw.jzgxp.cn
http://IAdaNfAj.jzgxp.cn
http://rEf5FdeG.jzgxp.cn
http://COzN8aBx.jzgxp.cn
http://BvB4G9Lo.jzgxp.cn
http://PnLOOE2Q.jzgxp.cn
http://79PoFxHD.jzgxp.cn
http://www.dtcms.com/a/380516.html

相关文章:

  • Tessent_ijtag_ug——第 4 章 ICL 提取(1)
  • Qt开发经验 --- Qt 修改控件样式的方式(16)
  • UE5 基础应用 —— 07 - 角色蓝图 简单使用
  • Motioncam Color S + 蓝激光:3D 视觉革新,重塑工业与科研应用新格局
  • arduino编程esp8266模块并烧写联网详细教程【单片机联网】
  • 云蝠智能大模型呼叫——AI不仅能“听懂话”,更能“读懂心”
  • 交通信号灯SUMO仿真深度强化学习完整代码python
  • QT M/V架构开发实战:QStandardItemModel介绍
  • OSI(Open Systems Interconnection)七层模型详解
  • 【硬件-笔试面试题-91】硬件/电子工程师,笔试面试题(知识点:MOS管参数选型)
  • 工业相机与镜头的靶面尺寸详解:选型避坑指南
  • Python @contextmanager 装饰器
  • 关于ros2中的话题topic的一些问题
  • 计算机视觉----opencv高级操作(二)(图像的直方图均衡化,角点检测,特征提取Sift)
  • Vue 3 中监听多个数据变化的几种方法
  • nodejs 、 npm、vite的版本对应关系及创建一个指定版本的 Vite 项目
  • 5. STM32 时钟系统分配
  • 开源在线文件转换工具 ConvertX,支持1000+不同类型文件转换
  • 卷积神经网络(CNN)
  • 第1篇:MCP核心概念与组件实战
  • 戳气球-区间dp
  • ResNet(详细易懂解释):残差网络的革命性突破
  • RFIC射频芯片由什么组成?
  • OpenCV的cv2.VideoCapture如何加GStreamer后端
  • 自由学习记录(98)
  • 【爬坑指南】亚马逊文件中心 AWS S3 预签名URL 前端直传
  • 【技术教程】如何将文档编辑器集成至用PHP编写的Web应用程序中
  • AWS RDSInstance模型优化实践:从字段长度调整到索引策略全面提升
  • ADSP-ADI sharc 内存配置笔记
  • 嵌入式C语言-关键字typedef