1、需要包含mysql API的頭檔
如果需要連接都本機的mysql資料庫,前提是本機要已經安裝了mysql資料庫。這裡要用到一些mysql的API,像是連接資料庫、執行查詢語句等操作,這些介面都包含在下面的頭檔中:
#include <mysql/mysql.h>
2、連接mysql具體步驟
這裡大致可以分為四個主要步驟:
1、連接mysql資料庫
1、連接mysql資料庫
顯然,如果要取得mysql資料中數據,首先要連接資料庫,取得一個可以操作資料庫的句柄。
2、執行查詢語句,也就是選擇我們需要的資料
就是執行查詢語句,查詢我們需要的資料。查詢到的資料會保存在一個叫做結果集的地方。
3、從結果集中取得所需的資料
利用相關的介面函數,從結果集中取得每一行各地欄位的資料。
4、從結果集中提取每行各個字段的信息
5、釋放資源,包括結果集合mysql句柄
下面具體講解一下幾個必須用到的關鍵介面函數。
2.1 mysql_real_connect
此函數用於連接執行在主機上的資料庫引擎,如果連線成功,將獲得可以操作資料庫的句柄,否則傳回NULL指標。
MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag )
此函數參數眾多,各參數意義如下:
#mysql:是已有MYSQL結構的位址。在呼叫mysql_real_connect()之前,必須先呼叫mysql_init()來初始化MYSQL結構。
host:是主機名稱或IP位址。如果「host」是NULL或字串"localhost",連線將被視為與本機的連線。
user:使用者的MySQL登入ID。如果“user”是NULL或空字串"",使用者將被視為目前使用者。
passwd:使用者的密碼。如果「passwd」是NULL,只會對該使用者的(擁有1個空密碼欄位的)使用者表中的項目進行比對檢查。
db:是資料庫名稱。如果db為NULL,連線會將預設的資料庫設為該值。
port:如果「port」不是0,則其值將用作TCP/IP連接的連接埠號碼。注意,「host」參數決定了連線的類型。
unix_socket:如果unix_socket不是NULL,則字串描述了應使用的套接字或命名管道。注意,「host」參數決定了連線的類型。
client_flag:值通常為0
2.2 mysql_query 或mysql_real_query
該函數用於向資料庫傳送一條查詢指令,並讓資料庫執行。返回0表示查詢成功,否則失敗。
int mysql_query(MYSQL *mysql, const char *stmt_str)
或:
int mysql_real_query(MYSQL *mysql, const char *stmt_str, unsigned long length)
mysql:為透過取得到的mysql操作句柄。
stmt_str:表示需要執行的查詢語句。
length:為查詢語句的長度。
上面兩個函數的差別在於:
mysql_query() 不能用來執行帶二進位的語句,也就是參數stmt_str中不能有二進位數據,會被解析成字元。
mysql_query查速度稍慢一些,因為需要計算查詢語句的長度
2.3 取得結果集mysql_store_result
該函數傳回查詢成功的結果集,如果失敗則傳回NULL
MYSQL_RES *mysql_store_result(MYSQL *mysql)
2.4 顯示結果集中每行資料
該函數的入參為步驟(3)中傳回的結果集。每次呼叫時,傳回結果集中的下一行數據,並將指標向後移動一行,如果沒有下一行數據,則傳回NULL。
可以用mysql_num_fields(result)計算結果集中行的數量,mysql_num_fields(result)可以計算列的數量。假如row為某一行的信息,那麼row[0]、row[1]。 。 。依序該行的各個欄位資訊。
MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)
3、一個程式範例
這裡的環境為linux系統。用到本地資料庫名稱為:CrashCourse,查詢的表格名稱為products,在下面的程式實例中,示範了查詢products表格中價錢大於30的所有項目。 products表格完整內容如下:
#include#include <mysql/mysql.h> #include using namespace std; MYSQL mysql; //mysql连接 MYSQL_RES* res; //结果集结构体 MYSQL_ROW row; //char** 二维数组,存放记录 int main() { // 步骤1: 初始化并连接数据库,获得操作数据库的句柄 mysql_init(&mysql); //初始化 if (!(mysql_real_connect(&mysql, "localhost", "root", "root", "CrashCourse", 0, NULL, 0))) { cout << "Couldn't connect to Database!\n : " << mysql_error(&mysql); exit(1); } else { printf("Database connection succeeded. Connected...\n\n"); } // 步骤2: 执行查询语句,查询需要的数据(设置编码格式也相当于执行特殊的查询语句) mysql_query(&mysql, "set names gbk"); // 设置编码格式 mysql_query(&mysql, "SELECT * from products where prod_price > 30"); // 步骤3:获取结果集 res = mysql_store_result(&mysql); // 步骤4:显示结果集中每行数据 int cols = mysql_num_fields(res); // 计算结果集中,列的个数 while (row = mysql_fetch_row(res)) { for (int i = 0; i < cols; ++i) { cout << row[i] << "\t"; } cout << endl; } // 步骤5:释放结果集合mysql句柄 mysql_free_result(res); mysql_close(&mysql); return 0; }
查詢結果如下:
##
以上是C++怎麼連接mysql資料庫並讀取數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于架构原理的相关内容,MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层,下面一起来看一下,希望对大家有帮助。

mysql的msi与zip版本的区别:1、zip包含的安装程序是一种主动安装,而msi包含的是被installer所用的安装文件以提交请求的方式安装;2、zip是一种数据压缩和文档存储的文件格式,msi是微软格式的安装包。

方法:1、利用right函数,语法为“update 表名 set 指定字段 = right(指定字段, length(指定字段)-1)...”;2、利用substring函数,语法为“select substring(指定字段,2)..”。

在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

在mysql中,可以利用REGEXP运算符判断数据是否是数字类型,语法为“String REGEXP '[^0-9.]'”;该运算符是正则表达式的缩写,若数据字符中含有数字时,返回的结果是true,反之返回的结果是false。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了mysql高级篇的一些问题,包括了索引是什么、索引底层实现等等问题,下面一起来看一下,希望对大家有帮助。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3漢化版
中文版,非常好用

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)