C 連線MySQL資料庫並讀取資料

2021-08-28 03:47:02 字數 2878 閱讀 6997

以讀取資料為例:

1)第一步,要將你的c++程式與mysql連線起來,這裡要用到函式mysql_real_connect()

2)第二步,執行查詢語句,這裡要用到函式mysql_query()

3)查詢語句查詢到的結果,稱為結果集,第三步就是要將結果集中的所有資料,存放在乙個變數a中,型別為mysql_res

注意:這個變數中存放的資料,是以「行」和「列」為結構的,也就是一整個表。

例如:身份證號

姓名性別

餘額1111

mike男50

2222

john男30

4)雖然所有資料都存放進了上一步的變數a中,但你還不能把a作為乙個整體輸出到螢幕上,而需要另乙個變數b,型別為mysql_row,變數b類似乙個一維陣列,一次只能儲存一行變數a中的資料,而下標[ ]表示列,假設變數b當前儲存了變數a中的第一行,則b[2]就是指這一行的第二列,也就是mike,將變數a中的一行賦給變數b的函式叫做mysql_fetch_row(),而為了將變數b中儲存的資料全部輸出到螢幕,則需要用到迴圈

5)最後用完了,要釋放記憶體,並關閉和資料庫的連線。

實際上,還有乙個最重要的變數,型別為mysql(從型別的名字就可以看出來很重要),是必須在第一步之前就宣告的,試想,c++程式與mysql這兩個本來毫無關聯的東西,是怎麼聯絡起來的呢?如果c++程式在mysql內部,有乙個「通訊兵」,這個「通訊兵」在c++連線mysql時承擔重要的作用。而變數a又是怎麼儲存查詢得到的結果集的呢,這也需要這個「通訊兵」先在mysql內找到這個結果集的位址,再通過乙個函式,mysql_store_result(),把結果集的位址告訴這個函式,讓這個函式把這個位址儲存的值(也就是結果集),賦給變數a。

型別:mysql:該結構代表1個資料庫連線的控制代碼。幾乎所有的mysql函式均使用它。

mysql_res:該結構代表返回行的查詢結果(例如select查詢語句)。在本節的剩餘部分,將查詢返回的資訊稱為「結果集」。(也就是前面提到的變數a)

mysql_row:這是1行資料的「型別安全」表示,行是通過呼叫mysql_fetch_row()從mysql_res型變數中獲得的。(也就是前面提到的變數b)

例如定義乙個mysql_res和乙個mysql_row變數,並將mysql_res中的一行賦給mysql_row變數

mysql_res *result;

mysql row row;

//.....為result賦值部分省略

row = mysql_fetch_row(result);

//每成功呼叫一次mysql_fetch_row(),就滑向下一行,若到達最後一行,則返回null

//所以下次呼叫mysql_fetch_row(result)時,就是將下一行賦給乙個mysql_row變數

api:

mysql_init():用於初始化mysql變數

mysql ceshi;

mysql_init(&ceshi);

mysql_real_connect():連線mysql,有8個引數,

第乙個引數是mysql變數的位址,

第二個引數是主機名或ip位址,如果「host」是null或字串"localhost"或「127.0.0.1」,連線將被視為與本地主機的連線,

第三個引數是mysql登入id

第四個引數是使用者的密碼

第五個引數是資料庫名稱

第六個引數是tcp/ip連線的埠號

第七個引數一般為null,不需要了解

第八個引數一般為0,不需要了解

例如:

mysql_real_connect(&ceshi, "127.0.0.1", "root", "123", "db", 3306, null, 0)
mysql_query():向資料庫傳送查詢語句

第乙個引數為mysql變數的位址,第二個引數為"查詢語句"

例如:

mysql_query(&ceshi, "select * from movie");
mysql_store_result():將mysql_query()查詢到的結果集,賦給mysql_res變數

只有乙個引數,為mysql變數的位址

例如:

result = mysql_store_result(&ceshi);
mysql_fetch_row():將mysql_res變數中的一行賦給mysql_row變數,當重複呼叫mysql_fetch_row()時,將逐個獲取結果集的行,到最後一行後返回null

mysql_num_fields():獲取結果集中的列數,返回值為整型

下面是實踐:

#include #include using namespace std;

int main()

if (!mysql_query(&ceshi, "select * from vips")) //若查詢成功返回0,失敗返回隨機數

result = mysql_store_result(&ceshi); //將查詢到的結果集儲存到result中

num = mysql_num_fields(result); //將結果集列數存放到num中

while ((row = mysql_fetch_row(result))) //遇到最後一行,則中止迴圈

cout << endl;

} mysql_free_result(result); //釋放結果集所占用的記憶體

mysql_close(&ceshi); //關閉與mysql的連線

}

python連線MySQL資料庫並讀取資料

匯入模組 import pymysql 1.連線到mysql資料庫 conn pymysql.connect host localhost user root password 1234 db mycommodity charset utf8 localhost連線本地資料庫 user 使用者名稱 ...

python 連線 mysql 資料庫並讀取資料

注 mysqldb只支援python2,pymysql支援python3 注 pymysql.connect引數中的 host 伺服器位址,本機可用 localhost 2 使用cursor讀取資料 注 read sql cursor游標區別 read sql 只能執行查詢資料 cursor游標 可...

python連線mysql資料庫並讀取資料的實現

1 安裝pymysql包 pip install pymysql 注 mysqldb只支援python2,pymysql支援python3 2 連線資料 import pymysql import pandas as pd from pandas import dataframe as df con...