[Mysql] Connector / C++ 使用

一、Connector / C++ 使用

要使用 C 語言連接 MySQL,需要使用 MySQL 官網提供的庫,可以去官網進行下載:MySQL :: MySQL Community Downloads

我們使用 C 接口庫來進行連接,要正確使用,還需要做一些準備工作:

  • 保證 MySQL 服務有效。
  • 在官網上下載合適自己平臺的 MySQL Connect 庫,以備后用。

現在可以不需要像上面這樣做了,因為我們在安裝數據庫時,系統就已經幫我們安裝好了。

進入

安裝完成后,MySQL 服務會自動啟動。可以通過以下命令檢查 MySQL 服務狀態:

詳細配置教程可見:

[MySQL#0] 詳解如何在 Linux 上安裝 MySQL | 常見登錄問題

查看庫


二、準備工作

1、驗證庫是否引入成功

編譯并運行:

可以查看到當前 mysql 客戶端的版本號。


三、MySQL 接口介紹

MySQL :: Developer Zone

可以自行選擇:


1、初始化 mysql_init()

要使用庫,就必須先進行初始化


2、鏈接數據庫 mysql_real_connect

初始化完畢之后,必須先鏈接數據庫,在進行后續操作(MySQL 網絡部分是基于 TCP/IP的)。

第一個參數 MYSQL 是 C api 中一個非常重要的變量(mysql_init 的返回值),里面內存非常豐富,有 port,dbname,charset 等連接基本參數。

它也包含了一個叫 st_mysql_methods 的結構體變量,該變量里面保存著很多函數指針

這些函數指針將會在數據庫連接成功以后的各種數據操作中被調用。

創建:

連接:

建立好鏈接之后,獲取英文沒有問題,如果獲取中文是亂碼:需要設置鏈接的默認字符集為 utf-8,原始默認是 latin1。


3、下發 MySQL 命令 mysql_query

第二個參數要執行的 sql 語句,如 select * from table。

mysql_query


4、獲取執行結果 mysql_store_result

sql 執行完以后,如果是查詢語句,當然還要讀取數據。如果 update,insert 等語句,那么就看下操作成功與否即可。

來看看如何獲取查詢結果: 如果 mysql_query 返回成功,那么就通過 mysql_store_result 這個函數來讀取結果。原型如下:

該函數會調用 MYSQL 變量中的 st_mysql_methods 中的 read_rows 函數指針來獲取查詢的結果,同時該函數還會返回 MYSQL_RES 這樣一個變量,這個變量主要用于保存查詢的結果。

同時該函數 malloc 了一片內存空間來存儲查詢過來的數據,所以一定要記得 free(result),不然肯定會造成內存泄漏的。

執行完 mysql_store_result 后,其實數據都已經在 MYSQL_RES 變量中了,下面的 api 基本就是讀取 MYSQL_RES 中的數據。

MYSQL_RES 結構體可以行列為單位把查詢得到的表結構數據組織好。

在我們使用 mysql_query 函數進行查詢結果后,對應的數據就被存放進了 MYSQL 結構體響應的空間中,此時我們再調用 mysql_store_result 函數,把這部分數據轉儲進 MYSQL_RES 結構體里。

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

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

相關文章

【PDF識別改名】使用京東云OCR完成PDF圖片識別改名,根據PDF圖片內容批量改名詳細步驟和解決方案

京東云OCR識別PDF圖片并批量改名解決方案一、應用場景在日常辦公和文檔管理中,經常會遇到大量 PDF 文件需要根據內容進行分類和命名的情況。例如:企業合同管理系統需要根據合同編號、日期等內容自動命名 PDF 文件圖書館數字化項目需要將掃描的圖書章節按…

stm32-modbus-rs485程序移植過程

背景 【modbus學習筆記】Modbus協議解析_modus協議中0.001如何解析-CSDN博客 【Modbus學習筆記】stm32實現Modbus(從機)并移植_stm32 modbus數據處理-CSDN博客 繼上篇成功移植modbus從機例程之后,我要嘗試移植主機的程序。經提醒,可用野火的modbus代碼…

Spring MVC 執行流程詳解:一次請求經歷了什么?

Spring MVC 執行流程詳解:一次請求經歷了什么? 引言 在現代 Web 開發中,Spring MVC 作為 Spring 框架的重要組成部分,廣泛應用于構建靈活、可擴展的 Java Web 應用。作為一個基于 MVC(Model-View-Controller&#xff0…

Vue 3的核心機制-解析事件流、DOM更新、數據請求、DOM操作規范及組件庫DOM操作的解決方案

文章目錄概要整體介紹vue 中dom操作推薦方案實例概要 從Vue 3的核心機制出發,結合場景、應用與實例,系統化解析事件流、DOM更新、數據請求、DOM操作規范及組件庫DOM操作的解決方案: 整體介紹 ?? 一、事件流處理機制 核心機制 ? 三個階段…

Python從入門到高手9.2節-Python字典的操作方法

目錄 9.2.1 字典的操作 9.2.2 字典的查找 9.2.3 字典的修改 9.2.4 字典的添加 9.2.5 字典的刪除 9.2.6 今天你逛街了嗎 9.2.1 字典的操作 字典類型是一種抽象數據類型,抽象數據類型定義了數據類型的操作方法,在本節的內容中,教同學們徹…

omniparser v2 本地部署及制作docker鏡像(20250715)

關于 omniparser v2 本地部署,網上資料不算多,尤其是對于土薔內用戶,還是有些坑的。 1、安裝步驟 可參考兩個CSDN博客: (1)大模型實戰 - ‘OmniParser-V2本地部署安裝 鏈接 (2)…

自己寫個 `rsync` + `fswatch` 實時增量同步腳本,干掉 Cursor AI、Sublime Text 的SFTP等 插件!

自己寫個 rsync fswatch 實時增量同步腳本,干掉 Cursor AI、Sublime Text 的 SFTP等 插件! 作為一個碼農,我最頭疼的事情之一就是編輯器同步代碼到服務器這塊。用過各種各樣的sftp、rsync插件,感覺不好用。。 我琢磨著&#xff1…

linux中at命令的常用用法。

Linux 中 at 命令用于安排一次性定時任務,需要用到在某個時間只需要執行一次的命令的時候,可以使用at 1:安裝at # Debian/Ubuntu sudo apt install at# CentOS/RHEL sudo yum install at2:啟動at sudo systemctl start atd # 啟…

【安卓筆記】RxJava的使用+修改功能+搭配retrofit+RxView防快速點擊

0. 環境: 電腦:Windows10 Android Studio: 2024.3.2 編程語言: Java Gradle version:8.11.1 Compile Sdk Version:35 Java 版本:Java11 1. 介紹RxJava GitHub開源地址:https://github.com/Reactive…

Windows 下原生使用 claude code + Kimi K2

搞定了kimi k2 claude code在windows下原生使用 Windows下使用claude code的障礙是shell環境(命令行),非posix風格shell無法正常讓claude code讀取到url和key, 導致無法使用。解決問題的本質是使用符合posix風格的shell環境,我們…

Leetcode Easy題小解(C++語言描述)1

Leetcode Easy題小解(C語言描述) 相交鏈表 給你兩個單鏈表的頭節點 headA 和 headB ,請你找出并返回兩個單鏈表相交的起始節點。如果兩個鏈表不存在相交節點,返回 null 。 圖示兩個鏈表在節點 c1 開始相交**:**題目數據…

EP01:【NLP 第二彈】自然語言處理概述

一、NLP通向智能之路 1.1 圖靈測試 1.1.1 提出背景 由計算機科學家阿蘭?圖靈于 1950 年提出,是早期衡量機器智能水平的重要概念。 1.1.2 提出目的 判斷機器是否能表現出與人類相當的智能行為。 1.1.3 測試原理 場景設定:測試中存在一位人類測試者&#…

Ansible 查看PostgreSQL的版本

Ansible的基礎知識就不說了直接貼劇本- name: Check PostgreSQL versionhosts: db_serversbecome: yesvars:ansible_python_interpreter: /usr/bin/python3db_name: postgresdb_user: postgresdb_password: your_passwordtasks:- name: Install psycopg2ansible.builtin.packag…

【視覺SLAM筆記】第9章 后端1

一、理論1. 狀態估計的概率解釋我們來深入探討一下視覺SLAM中狀態估計的概率解釋。這可以說是理解現代SLAM算法(尤其是后端優化)的基石1. 問題的核心:不確定性SLAM(同步定位與建圖)的本質是在一個未知環境中&#xff0…

(數據結構)復雜度

基本概念說明 數據結構 定義:數據結構(Data Structure)是計算機存儲、組織數據的方式,指相互之間存在?種或多種特定關系的數據元素的集合。沒有?種單?的數據結構對所有用途都有用(要考慮適配、效率問題,在不同情況下使用合適的…

玩轉Docker | 使用Docker部署bender個人導航頁工具

玩轉Docker | 使用Docker部署bender個人導航頁工具 前言 一、bender介紹 Bender 簡介 Bender 的主要特點 二、系統要求 環境要求 環境檢查 Docker版本檢查 檢查操作系統版本 三、部署bender服務 下載bender鏡像 編輯部署文件 創建容器 檢查容器狀態 檢查服務端口 安全設置 四、…

解決了困擾我的upload靶場無法解析phtml等后綴的問題

本文章為解決困擾我的 upload 靶場無法解析 phtml 問題 ? 這個問題直接讓我過不了Upload-Pass-03這一關,一直卡著。 ? 痛太痛了 ,為什么無法解析上傳之后的 phtml 后綴文件!這塊兒折磨了博主一天多,太不容易了,查找…

Leetcode百題斬-二分搜索

二分搜索也是一個很有趣的專題,被做過的題中,剛好一個Easy,一個Medium和一個Hard,剛好可以看看,二分搜索的三個難度等級都是啥樣的。 124. Binary Tree Maximum Path Sum[Hard](詳見二叉樹專題)…

【IDEA】格式化代碼工具配置

格式化代碼快捷鍵: CtrlAltL格式代碼的時候不會再方法名與參數中間添加空格默認不勾選的情況下:代碼樣例:勾選之后的樣例:選擇不勾選,IDEA默認情況下就是不勾選的狀態忽略加載文件有些非必要加載到開發工具中的文件我們…

驅動開發(3)|rk356x驅動GPIO基礎應用之點亮led燈

點亮LED燈看似是一個基礎的操作,但實際上,許多高級應用也依賴于高低電平的切換。例如,脈沖寬度調制(PWM)信號可以用來精確控制電機的轉速,通過改變脈沖的頻率和占空比,實現對電機的精確調節&…