基本上,您調用mysql_store_result()或mysql_use_result()來訪問結果集,前者將所有行裝載到客戶端的內存中,後者從服務器一次訪問一行。如果你使用mysql_use_result(),你需要調用mysql_fetch_row()來訪問每一行,直到函數返回NULL。每次成功調用mysql_fetch_row()都會返回一個MYSQL_ROW,您可以使用它來訪問各個字段值。
由於字段是不是空終止的,你需要使用mysql_fetch_lengths()來獲得每個字段的長度,這樣就可以通過memcpy的其他地方複製它們,等
由於字段值如果你想將它作爲一個字符串使用,你將需要添加你自己的NUL字符。請注意,字段值可能包含二進制數據,因此如果您將其視爲字符串,那麼期望C字符串的函數將在數據遇到空字符時停止處理數據。
下面是從文檔的例子,應該幫助你把這個放在一起:
MYSQL_ROW row;
unsigned int num_fields;
unsigned int i;
num_fields = mysql_num_fields(result);
while ((row = mysql_fetch_row(result)))
{
unsigned long *lengths;
lengths = mysql_fetch_lengths(result);
for(i = 0; i < num_fields; i++)
{
printf("[%.*s] ", (int) lengths[i],
row[i] ? row[i] : "NULL");
}
printf("\n");
}
感謝,所以我可以得到的長度,但是如果我要得到的東西,被存儲爲VARCHAR數據庫?這是否意味着我不能在結果中使用strcmp? – Steve 2008-11-07 01:24:36