C++查詢mysql數據

文章目錄

文章目錄

1.前言

2. 代碼

(1)執行查詢SQL

(2)獲取結果集

(3)遍歷結果集(獲取字段數、行數)

(4)釋放資源

3.完整代碼


1.前言

我們成功連接數據庫mysql后,可以對mysql進行億些操作,比如查詢,插入,刪除……

今天就來講講查詢。

本文默認你已成功連接mysql,關于不知道如何連接mysql的自己看我之前的博文

C++連接MySQL完整教程https://blog.csdn.net/bilin_jam/article/details/149665533


2. 代碼

(1)執行查詢SQL

首先我們要先了解一個函數:mysql_query(),雖然query的意思是查詢,但它不只只可以進行查詢數據,它可以執行任何sql代碼,用法如下:

const char* sql = "...(sql代碼)";if (mysql_query(conn, sql) != 0) { std::cerr << "出錯: " << mysql_error(conn) << std::endl;mysql_close(conn); return 1;}

我們要查詢數據,就需要用到選擇數據庫的sql代碼:

SELECT id,name,gender,level,createTime FROM bilin_user

?此處id,name,gender,level,createTime是我的數據庫的列的名稱。bilin_user是我數據庫表格的名稱。我的數據庫大致如下:

bilin_user
idnamegenderlevel

createTime

1***2002024-10-05 16:19:11
2***1002024-10-05 17:32:10
3***412025-07-24 18:43:10

綜上所述,執行查詢的代碼應如下:

// 1. 執行查詢SQL ; const char* sql = "SELECT id,name,gender,level,createTime FROM bilin_user";if (mysql_query(conn, sql) != 0) { std::cerr << "查詢失敗: " << mysql_error(conn) << std::endl;mysql_close(conn); return 1;} 
(2)獲取結果集

首先,我們可以用一段代碼來獲取:

MYSQL_RES* result = mysql_store_result(conn);

然后再獲取錯誤,完整代碼:

// 2. 獲取結果集MYSQL_RES* result = mysql_store_result(conn); if (result == NULL) { std::cerr << "獲取結果集失敗: " << mysql_error(conn) << std::endl;mysql_close(conn); return 1;} 
(3)遍歷結果集(獲取字段數、行數)

?定義字段數:

int num_fields = mysql_num_fields(result);

定義一行數據(數組):

MYSQL_ROW row;

然后挨個輸出即可:?

while ((row = mysql_fetch_row(result)) != NULL) { std::cout << row[0] << std::endl;std::cout << row[1] << std::endl;std::cout << row[2] << std::endl;std::cout << row[3] << std::endl;std::cout << row[4] << std::endl;} 

或者是這樣(自動判斷列數):

int num_row = mysql_field_count(conn);while ((row = mysql_fetch_row(result)) != NULL) { int num = 0;for ( num = 0; num <= num_row; num++){std::cout << row[num] << std::endl;}} 

?完整代碼:

// 3. 遍歷結果集(獲取字段數、行數)int num_fields = mysql_num_fields(result); // 字段數MYSQL_ROW row; // 一行數據(數組)while ((row = mysql_fetch_row(result)) != NULL) { std::cout << row[0] << std::endl;std::cout << row[1] << std::endl;std::cout << row[2] << std::endl;std::cout << row[3] << std::endl;std::cout << row[4] << std::endl;} 
(4)釋放資源
// 4. 釋放資源 mysql_free_result(result);

3.完整代碼

// 1. 執行查詢SQL ; const char* sql = "SELECT id,name,gender,level,createTime FROM bilin_user";if (mysql_query(conn, sql) != 0) { std::cerr << "查詢失敗: " << mysql_error(conn) << std::endl;mysql_close(conn); return 1;} // 2. 獲取結果集MYSQL_RES* result = mysql_store_result(conn); if (result == NULL) { std::cerr << "獲取結果集失敗: " << mysql_error(conn) << std::endl;mysql_close(conn); return 1;} // 3. 遍歷結果集(獲取字段數、行數)int num_fields = mysql_num_fields(result); // 字段數MYSQL_ROW row; // 一行數據(數組)while ((row = mysql_fetch_row(result)) != NULL) { std::cout << row[0] << std::endl;std::cout << row[1] << std::endl;std::cout << row[2] << std::endl;std::cout << row[3] << std::endl;std::cout << row[4] << std::endl;} // 4. 釋放資源 mysql_free_result(result);

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/90641.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/90641.shtml
英文地址,請注明出處:http://en.pswp.cn/web/90641.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【論文閱讀】-《GenAttack: Practical Black-box Attacks with Gradient-Free Optimization》

GenAttack&#xff1a;利用無梯度優化的實用黑盒攻擊 Moustafa Alzantot UCLA Los Angeles, U.S.A malzantotucla.edu Yash Sharma Cooper Union New York, U.S.A sharma2cooper.edu Supriyo Chakraborty IBM Research New York, U.S.A supriyous.ibm.com Huan Zhang UCLA Los…

CT、IT、ICT 和 DICT區別

這四個術語&#xff1a;CT、IT、ICT 和 DICT&#xff0c;是信息通信行業中常見的核心概念&#xff0c;它們既有演進關系&#xff0c;又有各自的技術重點。&#x1f539; 一、CT&#xff08;Communication Technology&#xff09;通信技術**定義&#xff1a;**以語音通信為核心的…

Effective C++ 條款4:確定對象被使用前已先被初始化

Effective C 條款4&#xff1a;確定對象被使用前已先被初始化核心思想&#xff1a;永遠在使用對象前將其初始化。未初始化對象是未定義行為的常見來源&#xff0c;尤其對于內置類型。 1. 內置類型手動初始化 int x 0; // 手動初始化 const char* text &quo…

LangSmith的配置介紹

文章目錄注冊及登錄生成API KeyLangSmith的配置方式一&#xff1a;放運行環境里方式二&#xff1a;寫代碼里執行代碼查看LangSmith上是否看到本次運行的項目記錄LangSmith的其他注意注冊及登錄 首先使用郵箱注冊一個賬號及設置密碼&#xff0c;等收到收到郵件后&#xff0c;進…

Linux的生態與軟件安裝

堅持用 清晰易懂的圖解 代碼語言&#xff0c;讓每個知識點變得簡單&#xff01; &#x1f680;呆頭個人主頁詳情 &#x1f331; 呆頭個人Gitee代碼倉庫 &#x1f4cc; 呆頭詳細專欄系列 座右銘&#xff1a; “不患無位&#xff0c;患所以立。” Linux的生態與軟件安裝前言目錄…

3.4 安全-分布式-數據庫-挖掘

一、數據庫的安全數據庫里面的安全措施&#xff1a;用戶標識和鑒定&#xff1a;用戶的賬戶口令等存取控制&#xff1a;對用戶操作進行控權&#xff0c;有對應權限碼才能操作。密碼存儲和傳輸&#xff1a;加密存儲。視圖的保護&#xff1a;視圖需要授權審計&#xff1a;專門的文…

多線程 Reactor 模式

目錄 多線程 Reactor 模式的核心動機 多線程演進方向 多線程 Reactor 模型結構 多線程 EchoServer 實現核心部分 Handler 的多線程化 多線程 Reactor 的三個核心點 本篇文章內容的前置知識為 單線程 Reactor 模式&#xff0c;如果不了解&#xff0c;可點擊鏈接學習 單線程…

[NLP]多電源域設計的仿真驗證方法

多電源域設計的仿真驗證方法 1. 更復雜的 Testbench 例子(多電源域、復雜低功耗場景) 假設有兩個電源域 PD1 和 PD2,分別對應控制信號 pwr_sw_ctrl1、iso_ctrl1、ret_ctrl1 和 pwr_sw_ctrl2、iso_ctrl2、ret_ctrl2,且兩域之間有通信。 RTL 端口聲明(簡化版) module top…

Apache Ignite 中 WHERE 子句中的子查詢(Subqueries in WHERE Clause)的執行方式

這段內容是關于 Apache Ignite 中 WHERE 子句中的子查詢&#xff08;Subqueries in WHERE Clause&#xff09;的執行方式 的說明。理解這段內容對于編寫高效的 SQL 查詢、避免性能瓶頸非常重要。下面我將為你 逐句解釋并深入理解這段內容。&#x1f9fe; 原文翻譯 解釋 原文&a…

MySQL(153)如何使用全文索引?

MySQL的全文索引&#xff08;Full-Text Index&#xff09;是一種特殊的索引類型&#xff0c;專門用于加速文本數據的搜索。與普通的B樹索引不同&#xff0c;全文索引適用于大文本字段&#xff08;如TEXT、VARCHAR等&#xff09;的全文搜索。它通過構建一個倒排索引&#xff0c;…

微分方程入門之入門之入門,純筆記

當描述 相對變化量 比 絕對量 更容易時&#xff0c;微分方程就經常用到了。 比如&#xff0c;描述為什么種群數量增加or減少【相對】&#xff0c;比描述為什么它在某個時間點是某個特定值【絕對】更容易。 物理學中&#xff0c;運動經常用力來描述&#xff0c;力–>代表變化…

【C++】簡單學——vector類(模擬實現)

模擬實現的準備工作 看源碼&#xff0c;了解這個類的大概組成 1.先看成員變量 成員變量的組成是三個迭代器 問&#xff1a;這個iterator內嵌類型究竟是什么&#xff1f;即這個迭代器是什么 迭代器實際就是T* 問&#xff1a;這三個迭代器代表什么意思&#xff1f; 連蒙帶猜…

【WRF】根據自動安裝腳本安裝 WRF / WRF-CHEM等

目錄 GitHub 上 WRF 自動安裝腳本 ?? 腳本的作用 ??? 支持的系統 ?? 可安裝的 WRF 版本及其選項 ? 如何使用(以 WRF 4.6.1 為例) ? 依賴庫的安裝位置 完整安裝腳本分析 參考 GitHub 上 WRF 自動安裝腳本 GitHub 上的 WRF-Install-Script 項目的 Releases(發布版本…

M2IV:面向大型視覺-語言模型中高效且細粒度的多模態上下文學習

MIV&#xff1a; Towards Efficient and Fine-grained Multimodal In Context Learning in Large Vision-Language Models COLM 2025 why 新興的研究方向&#xff1a;上下文學習&#xff08;ICL&#xff09;的效果“向量化”&#xff0c;其核心思想是用transformer內部的向量來…

龍迅#LT8711UXD適用于Type-C/DP1.4 /EDP轉 HDMI2.0 功能,分辨率高達4K60HZ,可支持HDCP!

1. 描述LT8711UXD 是一款高性能雙通道 Type-C/DP1.4 轉 HDMI2.0 轉換器&#xff0c;旨在將 USB Type-C 源或 DP1.4 源連接到 HDMI2.0 接收器。該LT8711UXD集成了一個符合 DP1.4 標準的接收器和一個符合 HDMI2.0 標準的發射器。此外&#xff0c;還嵌入了兩個用于CC通信的CC控制器…

《計算機組成原理與匯編語言程序設計》實驗報告一 基本數字邏輯及漢字顯示

目 錄 一、實驗學時 二、實驗目的 三、實驗要求 四、實驗內容 五、實驗步驟 1、打開Logisim軟件&#xff0c;列出異或邏輯電路真值表&#xff0c;并使用與、或、非基本原件實現異或邏輯電路。 2、打開Logisim軟件&#xff0c;列出同或邏輯電路真值表&#xff0c;并使用…

聚焦牛牛道:綠色積分模式如何實現快速發展?

?綠色消費積分政策再次進入大眾視野&#xff0c;這種能為企業減輕庫存負擔、讓咨金周轉更靈活的促銷方式&#xff0c;很快就成了焦點。牛牛道作為積極踐行這一政策的平臺&#xff0c;憑借其獨樹一幟的商業模式和運營思路&#xff0c;在短時間內就取得了顯著發展。一、牛牛道平…

高頻 RFID 賦能工業教學設備教學應用

高頻 RFID 賦能工業教學設備教學應用應用背景傳統工業教學設備側重機械原理、電氣控制等基礎功能演示&#xff0c;缺乏對 RFID 等工業識別技術的具象教學載體。學生在理論學習中難以直觀理解 RFID 技術的工業適配邏輯&#xff0c;實訓中缺乏設備識別系統的部署、調試經驗&#…

Transformer:顛覆NLP的自注意力革命

Transformer:顛覆NLP的自注意力革命 Transformer是自然語言處理領域中極具影響力的深度學習模型架構,以下是對其的詳細介紹: 提出背景與應用:2017年,Vaswani等人在《Attention Is All You Need》論文中首次提出Transformer架構,它主要用于處理序列到序列的任務,如機器翻…

基于 KeepAlived + HAProxy 搭建 RabbitMQ 高可用負載均衡集群

基于 KeepAlived HAProxy 搭建 RabbitMQ 高可用負載均衡集群 基于 KeepAlived HAProxy 搭建 RabbitMQ 高可用負載均衡集群實戰指南 一、前言 在企業級應用中&#xff0c;消息隊列的高可用性是系統穩定性的重要保障。RabbitMQ 作為主流的消息中間件&#xff0c;雖然自身支持…