程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 有關Mysql的mysql_store_result函數返回NULL的情況以及其他注意事項,mysqlstoreresult

有關Mysql的mysql_store_result函數返回NULL的情況以及其他注意事項,mysqlstoreresult

編輯:MySQL綜合教程

有關Mysql的mysql_store_result函數返回NULL的情況以及其他注意事項,mysqlstoreresult


成功調用mysql_query()後,mysql_store_result()能夠返回NULL。出現該情況時,表明出現了下述條件之一:

·         出現了malloc()故障(例如,如果結果集過大)。

·         無法讀取數據(在連接上出現了錯誤)。

·         查詢未返回數據(例如,它是INSERT、UPDATE或DELETE)。

通過調用mysql_field_count(),始終能檢查語句是否應生成非空結果。如果mysql_field_count()返回0,結果為空,而且上一個查詢是未返回值的語句(例如INSERT或DELETE)。如果mysql_field_count()返回非0值,語句應生成非空結果。關於這方面的示例,請參見mysql_field_count()函數介紹:

返回作用在連接上的最近查詢的列數。該函數的正常使用是在mysql_store_result()返回NULL(因而沒有結果集指針)時。在這種情況下,可調用mysql_field_count()來判定mysql_store_result()是否應生成非空結果。這樣,客戶端就能采取恰當的動作,而無需知道查詢是否是SELECT(或類似SELECT的)語句。在這裡給出的示例中,演示了完成它的方法。返回表示結果集中列數的無符號整數。

另一種可選的方法是,用mysql_errno(&mysql)替換mysql_field_count(&mysql)調用。在該情況下,無論語句是否是SELECT,你將直接從mysql_store_result()查找錯誤,而不是從mysql_field_count()的值進行推斷。

通過調用mysql_error()或mysql_errno(),可測試是否出現了錯誤。

 

注意:

對於成功調用mysql_query()進行select語句的查詢,即使查詢的數據不存在(即rowcount=0),result也不為NULL。result為NULL的情況只是檢測上一個查詢是否是有返回值的語句。

 

范例:

MYSQL_RES *result; unsigned int num_fields; unsigned int num_rows; if (mysql_query(&mysql,query_string)) { // error } else // query succeeded, process any data returned by it { result = mysql_store_result(&mysql); if (result) // there are rows { num_fields = mysql_num_fields(result); // retrieve rows, then call mysql_free_result(result) } else // mysql_store_result() returned nothing; should it have? { if(mysql_field_count(&mysql) == 0) { // query does not return data // (it was not a SELECT) num_rows = mysql_affected_rows(&mysql); } else // mysql_store_result() should have returned data { fprintf(stderr, "Error: %s\n", mysql_error(&mysql)); } } }

 轉載請注明地址:http://www.cnblogs.com/fnlingnzb-learner/p/5826533.html

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved