一、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 結構體里。