要想對資料進行以上這些操作的話,就要了解一些基本的操作函式,下面是這些函式的介紹 和示例。
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...