C語言連接數據庫

文章目錄

  • 一、初始化數據庫
  • 二、創建數據庫連接
  • 三、執行增刪改查語句
    • 1、增刪改
    • 2、查
  • 四、執行增刪改查語句

接下來我簡單的介紹一下怎么用C語言連接數據庫。

  1. 初始化數據庫
  2. 創建數據庫連接
  3. 執行增刪改查語句
  4. 關閉數據庫連接

一、初始化數據庫

image-20241206094837682

// 數據庫初始化
MYSQL mysql;
MYSQL* ret1 = mysql_init(&mysql);
if (ret1 == nullptr)
{std::cerr << "init_error" << std::endl;exit(-1);
}/*****************
返回值:如果沒有足夠的內存來分配新對象,則為空。
*****************/

二、創建數據庫連接

image-20241206095514654

// 數據庫連接
MYSQL* ret2 = mysql_real_connect(&mysql, host.c_str(), user.c_str(), passwd.c_str(), db.c_str(), port, nullptr, 0);
if (ret2 == nullptr)
{std::cerr << "connect_error" << std::endl;exit(-1);
}/*****************
參數:1、MYSQL *mysql       ===> 創建的數據庫變量2、const char *host   ===> 主機號, 如果是本地可以用"127.0.0.1"3、const char *user   ===> 用戶名4、const char *passwd ===> 密碼5、const char *db     ===> 數據庫名6、unsigned int port  ===> 端口號7、剩下的兩個參數一個置空,一個置0就行
返回值:如果沒有足夠的內存來分配新對象,則為空。
*****************/

三、執行增刪改查語句

這個部分需要分成兩類:增刪改、查。增刪改只需要考慮這個語句執行的是否是正常的,但是查詢這個操作還需要通過返回值得到查詢的結果。

image-20241206100942877

1、增刪改

// 執行增刪改
std::string sql = "insert into user (name, age) values ('wangwu', 19);";
int ret3 = mysql_query(&mysql, sql.c_str());
if (ret3)
{std::cerr << "query_error" << std::endl;exit(-1);
}

2、查

  1. 執行查詢語句
  2. 得到結果集
  3. 得到結果集的行數和列數
  4. 遍歷即可

image-20241206101839021

// 執行查找語句
std::string sql = "select * from  user;";
int ret4 = mysql_query(&mysql, sql.c_str());
if (ret4)
{std::cerr << "query_error" << std::endl;exit(-1);
}
// 得到結果集
MYSQL_RES* res = mysql_store_result(&mysql);// 得到行數和列數
int row = mysql_num_rows(res);
int field = mysql_num_fields(res);// 得到列名
MYSQL_FIELD* fields = mysql_fetch_fields(res);
for (int i = 0; i < row; i++)
{// 注意,不能直接打印,需要指定里面的name屬性std::cout << fields[i].name << " ";
}
std::cout << "\n";// 遍歷得到結果集
MYSQL_ROW line;
for (int i = 0; i < row; i++)
{line = mysql_fetch_row(res);for (int j = 0; j < field; j++){std::cout << line[j] << " ";}std::cout << "\n";
}

四、執行增刪改查語句

image-20241206100632686

// 關閉數據庫
mysql_close(&mysql);

cout << “\n”;
}


# 四、執行增刪改查語句[外鏈圖片轉存中...(img-9HkkinoN-1733452583128)]```cpp
// 關閉數據庫
mysql_close(&mysql);

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

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

相關文章

優化LabVIEW數據運算效率的方法

在LabVIEW中進行大量數據運算時&#xff0c;提升計算效率并減少時間占用是開發過程中常遇到的挑戰。為此&#xff0c;可以從多個角度著手優化&#xff0c;包括合理選擇數據結構與算法、并行處理、多線程技術、硬件加速、內存管理和界面優化等。通過采用這些策略&#xff0c;可以…

開源模型應用落地-安全合規篇-用戶輸入價值觀判斷(四)

一、前言 在深度合規功能中,對用戶輸入內容的價值觀判斷具有重要意義。這一功能不僅僅是對信息合法性和合規性的簡單審核,更是對信息背后隱含的倫理道德和社會責任的深刻洞察。通過對價值觀的判斷,系統能夠識別可能引發不當影響或沖突的內容,從而為用戶提供更安全、更和諧的…

計算機的錯誤計算(一百七十六)

摘要 利用某一大語言模型計算 的值&#xff0c;輸出為 0 . 例1. 在某一大語言模型下&#xff0c;計算 的值。其中sin中值取弧度。結果保留16位有效數字。 直接貼圖吧&#xff1a; 點評&#xff1a; &#xff08;1&#xff09;以上為一個大模型給的答案。從其回答可知&…

數據結構與算法——1204—遞歸分治法

1、斐波那契數列優化 使用滾動變量&#xff0c;保存當前計算結果和前兩項值 (1)RAB (2)更新計算對象&#xff0c;AB&#xff0c;BR #include<iostream> using namespace std;int fun(int n) {if (n 0)return 0;if (n 1 || n 2)return 1;int num11;int num21;int su…

openstack內部rpc消息通信源碼分析

我們知道openstack內部消息隊列基于AMQP協議&#xff0c;默認使用的rabbitmq 消息隊列。談到rabbitmq&#xff0c;大家或許并不陌生&#xff0c;但或許會對oslo message有些陌生。openstack內部并不是直接使用rabbitmq&#xff0c;而是使用了oslo.message 。oslo.message 后端的…

Python 3 和 MongoDB 的集成使用

Python 3 和 MongoDB 的集成使用 MongoDB 是一個流行的 NoSQL 數據庫&#xff0c;以其靈活的數據模型和強大的查詢功能而聞名。Python 3 作為一種廣泛使用的編程語言&#xff0c;與 MongoDB 的集成變得日益重要。本文將介紹如何在 Python 3 環境中集成和使用 MongoDB&#xff…

Postman自定義腳本Pre-request-script以及Test

這兩個都是我們進行自定義script腳本的地方&#xff0c;分別是在請求執行的前后運行。 我們舉兩個可能經常運用到的場景。 (一)請求A先執行&#xff0c;請求B使用請求A響應結果作為參數。如果我們不用自定義腳本&#xff0c;可能得先執行請求A&#xff0c;然后手動復制響應結果…

構建高效OTA旅游平臺的技術指南

1. 引言 在信息技術高速發展的今天&#xff0c;互聯網深刻地改變了人們的旅行方式。傳統的旅行社模式逐漸被在線旅游平臺所取代&#xff0c;OTA&#xff08;Online Travel Agency&#xff0c;在線旅行社&#xff09;旅游平臺應運而生&#xff0c;成為人們獲取旅游信息、預訂旅…

總結的一些MySql面試題

目錄 一&#xff1a;基礎篇 二&#xff1a;索引原理和SQL優化 三&#xff1a;事務原理 四&#xff1a;緩存策略 一&#xff1a;基礎篇 1&#xff1a;定義&#xff1a;按照數據結構來組織、存儲和管理數據的倉庫&#xff1b;是一個長期存儲在計算機內的、有組織的、可共享 的…

116. UE5 GAS RPG 實現擊殺掉落戰利品功能

這一篇&#xff0c;我們實現敵人被擊敗后&#xff0c;掉落戰利品的功能。首先&#xff0c;我們將創建一個新的結構體&#xff0c;用于定義掉落體的內容&#xff0c;方便我們設置掉落物。然后&#xff0c;我們實現敵人死亡時的掉落函數&#xff0c;并在藍圖里實現對應的邏輯&…

Excel技巧:如何批量調整excel表格中的圖片?

插入到excel表格中的圖片大小不一&#xff0c;如何做到每張圖片都完美的與單元格大小相同&#xff1f;并且能夠根據單元格來改變大小&#xff1f;今天分享&#xff0c;excel表格里的圖片如何批量調整大小。 方法如下&#xff1a; 點擊表格中的一個圖片&#xff0c;然后按住Ct…

智能合約

06-智能合約 0 啥是智能合約&#xff1f; 定義 智能合約&#xff0c;又稱加密合約&#xff0c;在一定條件下可直接控制數字貨幣或資產在各方之間轉移的一種計算機程序。 角色 區塊鏈網絡可視為一個分布式存儲服務&#xff0c;因為它存儲了所有交易和智能合約的狀態 智能合約還…

智慧油客:從初識、再識OceanBase,到全棧上線

今天&#xff0c;我們邀請了智慧油客的研發總監黃普友&#xff0c;為我們講述智慧油客與 OceanBase 初識、熟悉和結緣的故事。 智慧油客自2016年誕生以來&#xff0c;秉持新零售的思維&#xff0c;成功從過去二十年間以“以銷售產品為中心”的傳統思維模式&#xff0c;轉向“以…

【深度學習】手機SIM卡托缺陷檢測【附鏈接】

一、手機SIM卡托用途 SIM卡托是用于固定和保護SIM卡的部件&#xff0c;通過連接SIM卡與手機主板的方式&#xff0c;允許設備訪問移動網絡&#xff0c;用戶可以通過SIM卡進行通話、發送短信和使用數據服務。 二、手機SIM卡托不良影響 SIM卡接觸不良&#xff0c;造成信號中斷&…

高新技術企業復審需要哪些材料?

高新技術企業復審需要準備以下材料&#xff1a; 《高新技術企業認定復審申請書》&#xff1b;高新技術企業證書&#xff1b;企業營業執照副本、稅務登記證書&#xff08;復印件&#xff09;&#xff1b;企業職工人數、學歷結構以及研發人員占企業職工的比例證明&#xff1b;五…

消防物證管理系統|DW-S404實現消防物證智能化管理

一、系統概述 智慧消防物證管理系統DW-S404系統旨在借助現代信息技術&#xff0c;達成消防物證管理的高效化、安全化及智能化管理目標。該系統運用物聯網、大數據、云計算等先進技術&#xff0c;實現對消防物證從產生到銷毀的全生命周期跟蹤與監控&#xff0c;從而增強物證管理…

Odoo :一款免費且開源的食品生鮮領域ERP管理系統

文 / 貝思納斯 Odoo金牌合作伙伴 引言 提供業財人資稅的精益化管理&#xff0c;實現研產供銷的融通、食品安全的追蹤與溯源&#xff0c;達成渠道的扁平化以及直面消費者的 D2C 等數字化解決方案&#xff0c;以此提升運營效率與核心競爭力&#xff0c;支撐高質量的變速擴張。…

如何部署vue項目到Github Pages

1.創建vue項目 npm create vitelatest my-vue-app -- --template vue 2.創建github倉庫 3.連接倉庫 在項目根目錄右鍵選擇open git base here&#xff0c;如果沒有安裝git請先安裝git。 初始化倉庫 $ git init $ git add . $ git commit -m "init"將項目與倉庫連…

Dubbo應用篇

文章目錄 一、Dubbo簡介二、SSM項目整合Dubbo1.生產者方配置2.消費者方配置 三、Spring Boot 項目整合Dubbo1.生產者方配置2.消費者方配置 四、應用案例五、Dubbo配置的優先級別1. 方法級配置&#xff08;Highest Priority&#xff09;2. 接口級配置3. 消費者/提供者級配置4. 全…

ubuntu的matlab使用心得

1.讀取視頻 v VideoReader(2222.mp4);出問題&#xff0c;報錯&#xff1a; matlab 錯誤使用 VideoReader/initReader (第 734 行) 由于出現意外錯誤而無法讀取文件。原因: Unable to initialize the video properties 出錯 audiovideo.internal.IVideoReader (第 136 行) init…