MySQL C API 使用(基本函式)

2021-09-05 10:47:32 字數 3446 閱讀 8777

a: mysql_init()——分配或初始化與mysql_real_connect()相適應的mysql物件。

mysql* mysql_init(mysql* mysql);
補充:如果mysql是null指標,該函式將分配、初始化、並返回新物件。否則,將初始化物件,並返回物件的位址。如果mysql_init()分配了新的物件,應當在程式中呼叫mysql_close() 來關閉連線,以釋放物件。

b: mysql_options()——用於設定額外的連線選項並影響連線的行為,可多次呼叫此函式來設定多個選項。

int mysql_options(mysql* mysql,enum mysql_option,const void* arg);
補充:在mysql_init()之後與mysql_real_connect()之前呼叫mysql_options()。

c: mysql_real_connect()——連線到mysql server

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連線控制代碼結構的任何其它api函式之前,mysql_real_connect() 必須成功完成。

「unix_socket」——通常指定為null

「client_flag」——通常為0,但是,也能將其設定為具有特定功能的標誌組合。(詳情參考:點這裡)

d: mysql_query()——執行以null結尾的字串指定的sql查詢語句

int mysql_query(mysql* mysql,const char* stmt_str)
補充:mysql_query() 不能用於執行包含二進位制資料的sql查詢語句,此時,你必須使用mysql_real_query()。

如果執行成功將返回0,如果執行錯誤,將返回非0值。

e: mysql_store_result()——向客戶端檢索完整的結果集

mysql_res* mysql_store_result(mysql* mysql)
說明:在呼叫mysql_query()或者mysql_real_query() 之後,你必須呼叫mysql_store_result()或者mysql_use_result() 對於那些成功檢索了資料的每個查詢(select,show,describe,explain,check table等)。

mysql_store_result()將查詢的全部結果讀取到客戶端,分配1個mysql_res結構,並將結果置於該結構中。

呼叫mysql_num_rows()可以找出結果集中的行數。可以呼叫mysql_fetch_row()來獲取結果集中的行,或呼叫mysql_row_seek()和mysql_row_tell()來獲取或設定結果集中的當前行位置。

在對結果集處理完成之後,也必須呼叫mysql_free_result()函式釋放記憶體。

f: mysql_use_result()——啟動逐行結果集檢索

mysql_res* mysql_use_result(mysql* mysql)
說明:mysql_use_result() 不像mysql_store_result() 那樣將結果集實際讀取到客戶端。它必須通過對mysql_fetch_row() 的呼叫,對每一行分別進行檢索。這將直接從伺服器讀取結果,而不會將其儲存到臨時表或本地緩衝區內,與mysql_store_result() 相比,速度更快而且使用的記憶體更少。使用mysql_use_result() 時,必須執行mysql_fetch_row() ,直至返回null值。

g: mysql_fetch_row()——從結果集中獲取下一行

mysql_row mysql_fetch_row(mysql_res* result)
h: mysql_free_result()——釋放結果集使用的記憶體

void mysql_free_result(mysql_res* result)
說明:當你完成了對結果集的處理之後,你必須釋放其使用的記憶體(通過呼叫mysql_free_result() 函式)。也不要嘗試在釋放記憶體之後,去獲取結果集。

i: mysql_error()——返回最近呼叫mysql函式發生的錯誤資訊

const char* mysql_error(mysql* mysql)
返回值:描述錯誤資訊的以null結尾的字串,如果未發生錯誤,則返回空字串。

m: mysql_close()——關閉乙個server連線

void mysql_close(mysql* mysql)
說明:關閉前面已經開啟的連線。如果控制代碼是由mysql_init() 或mysql_connect() 自定分配的,mysql_close() 還將解除分配由mysql指向的連線控制代碼。 

注:在windows系統上的vistual studio開發環境下需要包含標頭檔案#include ,並新增必要的庫檔案。在專案屬性頁介面也需要新增必要的包含目錄和庫目錄。

#include #include //mysql庫(第三方庫)

#include #pragma comment(lib,"libmysql.lib")

//全域性變數宣告

mysql mysql;

mysql_res* res;

mysql_row row;

unsigned int num_fields;

//連線資料庫

bool connectdatabase()

else

}//查詢資料

void querydata(std::string& query_sql_string)

else

{printf("query success\n");

res=mysql_store_result(&mysql);

num_fields=mysql_num_fields(res);

while((row=mysql_fetch_row(res))!=null)

{if(row[6]!=null)

{std::string temp_string =resultconverttojson(row);

convertutf8togbk(temp_string);

std::cout《對於c++程式設計師來說,mysql官方提供的c api(已經能滿足大多數應用場景。

如果為了追求效率和c++特性,可以選擇基於此 c api進行再封裝的第三方庫mysql++(

MySQL C API函式大全

mysql c api提供函式主要分為如下五種 1.控制類函式 2.資訊獲取類函式 3.行列類操作函式 4.執行緒類操作函式 5.出錯處理類函式 函式 描述 mysql affected rows 返回上次update delete或insert查詢更改 刪除 插入的行數。mysql autocom...

BCB下使用mysql c api步驟

bcb下使用mysql c api配置步驟 使用mysql c api直接操作mysql資料庫。配置步驟 1 修改mysql.h 找到內容為 if defined win32 defined win64 defined win 的行 大概48行左右,視具體版本而定 在該行下面新增如下行 includ...

informatica基本函式使用

to char sessstarttime,yyyy mm dd hh24 mi ss 2.decode函式 判斷搜尋 decode lb,進港 in tb,出港 out tb,港存 cc tb,null 3.to char以及增加日期方法 to char add to date to date c...