數據庫的連接_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://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…