C語言中使用mysql函式庫

2021-06-07 07:02:36 字數 3268 閱讀 7096

要想對資料進行以上這些操作的話,就要了解一些基本的操作函式,下面是這些函式的介紹 和示例。

1、mysql_real_query

原型:int mysql_real_query(mysql *mysql,const char *qurey,unsigned int length)

功能:執行sql語句。

引數:mysql *mysql 

該結構代表1個資料庫連線的控制代碼。幾乎所有的mysql函式均使用它。不應嘗試拷貝mysql結構。不保證這類拷貝結果會有用。

const *qurey  對資料庫操作的sql語句(沒有sql語句中應有的語句結束符號,即「;」)。例如:select * from tablename

unsigned int length  操作語句的字串長度。

返回值:操作成功返回0,否則返回非0。

示例:int i;

mysql mysql;

char *sql="select * from hotelwebmanager";

if((i=mysql_real_qurey(&mysql,sql,strlen(sql)))!=0)

else

可是這樣並不是把查詢的結果顯示出來,而只是將查詢語句傳給資料庫,這一點可以從些函式的返回值上看出。如果要想把真正的查詢結果顯示出來的話,還要繼續、耐心的學習。在這一節的最後還會有乙個完整的示例,不要急哦!

2、mysql_store_result

原型:mysql_res *mysql_store_result(mysql *mysql)

功能:得到查詢的結果集。

對於成功檢索了資料的每個查詢(select、show、describe、explain、check table等),必須呼叫mysql_store_result()或mysql_use_result() 。

引數:mysql *mysql  同mysql_real_qurey

返回值:mysql_res  該結構代表返回行的查詢結果(select, show, describe, explain)。也將查詢返回的資訊稱為「結果集」。

示例:mysql_res *result;

if(result=mysql_store_result(&mysql))!=null)

printf("result is not null\n");

else

printf("resutl is null\n");

3、mysql_num_rows

原型:my_ulonglong mysql_num_rows(mysql_res *result)

功能:返回查詢結果的行數。mysql_num_rows()的使用取決於是否採用了mysql_store_result()或mysql_use_result()來返回結果集。如果使用了mysql_store_result(),可以立刻呼叫mysql_num_rows()。如果使用了mysql_use_result(),mysql_num_rows()不返回正確的值,直至檢索了結果集中的所有行為止。

引數:mysql_res *result  由mysql_store_result返回的結果集。

返回值:my_ulonglong 

用於行數以及mysql_affected_rows()、mysql_num_rows()和mysql_insert_id()的型別。該型別提供的範圍為0~1.84e19。在某些系統上,不能列印型別my_ulonglong的值。要想列印這類值,請將其轉換為無符號長整數型別並使用%lu列印格式,例如:

printf("number of rows %lu\n",(unsigned long)mysql_num_rows(result));

4、mysql_num_fields

原型:unsigned int mysql_num_fields(mysql_res *result)

功能:返回查詢結果集的列數。

引數:同上

返回值:無符號整數。

示例:int i;

i=mysql_num_fields(result);

printf("%u",i);

5、mysql_fetch_row

原型:mysql_row mysql_fetch_row(mysql_res *result)

功能:檢索結果集的下一行。在mysql_store_result()之後使用時,如果沒有要檢索的行,mysql_fetch_row()返回null。在mysql_use_result()之後使用時,如果沒有要檢索的行或出現了錯誤,mysql_fetch_row()返回null。行內值的數目由mysql_num_fields(result)給出。如果行中儲存了呼叫mysql_fetch_row()返回的值,將按照row[0]到row[mysql_num_fields(result)-1],訪問這些值的指標。行中的null值由null指標指明。可以通過呼叫mysql_fetch_lengths()來獲得行中字段值的長度。對於空欄位以及包含null的字段,長度為0。通過檢查字段值的指標,能夠區分它們。如果指標為null,欄位為null,否則欄位為空。

返回值:

下一行的

mysql_row結構。如果沒有更多要檢索的行或出現了錯誤,返回null。

6、mysql_free_result

原型:void mysql_free_result(mysql_res *result)

功能:釋放由mysql_store_result()、mysql_use_result()、mysql_list_dbs()等為結果集分配的記憶體。完成對結果集的操作後,必須呼叫mysql_free_result()釋放結果集使用的記憶體。釋放完成後,不要嘗試訪問結果集。

返回值:無

好了,有了以上這些函式,就可以從表中查詢資料了,看一具體的例子吧。

/*select.c*/

#include

#include

#include

#include

int main(void)

if(!mysql_real_connect(&mysql,host_name,user_name,password,db_name,0,null,0))

if(mysql_real_query(&mysql,select_arg,strlen(select_arg))!=0)

if((result=mysql_store_result(&mysql))!=null)

{data_cols=mysql_num_fields(result);

while(row=mysql_fetch_row(result))

{int cols;

for(cols=0;cols

C語言函式庫

從今天開始,慢慢的寫全c語言函式庫的函式使用 1.函式名 atoi 功 能 把字串轉換成長整型數 用 法 int atoi const char nptr 需要傳進乙個char型別的指標 程式例 include include int main void 2.abort 功 能 異常終止乙個程序 用...

在VC中使用MATLAB C C 函式庫

在vc中使用matlab c c 函式庫 matlab廣泛應用於線性代數 自動控制理論 數理統計 數字訊號處理 時間序列分析 動態系統 等領域。因此如果在vc中對matlab進行呼叫將大大減少程式設計的工作量 保證程式的準確性,並且繼承了vc 強大的功能,提高開發效率,本文將介紹了在vc中使用mat...

Go語言中使用MySql資料庫

go中支援mysql的驅動目前比較多,有如下幾種,有些是支援database sql標準,而有些是採用了自己的實現介面,常用的有如下幾種 接下來的幾個小節裡面我們都將採用同乙個資料庫表結構 資料庫test,使用者表userinfo,關聯使用者資訊表userdetail。create table us...