以讀取資料為例:
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...