一、mysql-arp訪問數(shù)據(jù)的操作流程 1. 初始化mysql操作句柄; 2. 連接mysql服務(wù)器; 3. 設(shè)置mysql客戶端字符集(保持與服務(wù)器一致); 4. 選擇要操作的數(shù)據(jù)庫; 5. 定義sql語句,并且執(zhí)行語句;了解api接口,自己實現(xiàn)mysql客戶端,在代碼中訪問數(shù)據(jù)庫操作數(shù)據(jù)。
(就是將sql發(fā)送給服務(wù)器,服務(wù)器進行解析完成操作);
MYSQL *mysql_init(MYSQL *mysql);
mysql:傳入一個句柄的地址進行初始化,
如果傳入NULL,則內(nèi)部申請空間進行初始化并返回申請的句柄的首地址。
返回值:失敗返回NULL;
2. 連接mysql服務(wù)器MYSQL *mysql_real_connect(MYSQL *mysql, char *host, char *user, char *pass,
char *db, int port, char *socket, int clientflag);
mysql:mysql_init返回的句柄;
host:mysql服務(wù)器地址;
user:用戶名;
db:默認要操作的庫名稱;
port:端口,0表示默認使用3306端口
socket:套接字或者管道文件,通常置NULL;
clientflag:客戶端標志,通常置0;
返回值:成功返回句柄首地址,失敗返回NULL;
3. 設(shè)置當(dāng)前客戶端的字符集int mysql_set_character_set(MYSQL *mysql, const char *csname);
mysql:初始化完成的句柄;
csname:字符集名稱,通常是uft8;
返回值:成功返回0,失敗返回非0;
4. 選擇操作的數(shù)據(jù)庫int mysql_select_db(MYSQL *mysql, const char *db);
mysql:初始化完成的句柄;
db:要操作的數(shù)據(jù)庫名稱;
返回值:成功返回0,失敗返回非0;
5. 執(zhí)行sql語句int mysql_query(MYSQL *mysql, const char *sql);
mysql:初始化完成的句柄;
sql:要執(zhí)行的sql語句;
返回值:成功返回0,失敗返回非0;
5.1 獲取mysql-api接口運行失敗的原因:char * mysql_error(MYSQL *mysql)
6. 保存查詢結(jié)果到本地MYSQL_RES *mysql_store_result(MYSQL *mysql)
7. 獲取結(jié)果集中的行數(shù)與列數(shù)uint64_t mysql_num_rows(MYSQL_RES *res);
res:保存到本地的結(jié)果集地址;
返回值:結(jié)果集中數(shù)據(jù)的**條數(shù)**;
unsigned int mysql_num_fields(MYSQL_RES *res);
res:保存到本地的結(jié)果集地址;
返回值:結(jié)果集中每一條數(shù)據(jù)的**列數(shù)**;
8. 遍歷結(jié)果集MYSQL_ROW mysql_fetch_row(MYSQL_RES *res);
res:保存到本地的結(jié)果集地址;
遍歷結(jié)果集,會在res中做標記,保存讀寫位置,每獲取一條就會向后偏移;
MYSQL_ROW這是一個char *res[xxxx] - - 每個元素都是一個字段的值。
9. 釋放結(jié)果集mysql結(jié)果不管是什么類型,保存過來就是一個字符串;
int mysql_free_result(MYSQL_RES *res);
10. 關(guān)閉數(shù)據(jù)庫客戶端連接,銷毀句柄:int mysql_close(MYSQL *mysql);
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧