頭檔案
#include<mysql.h>
函式原型
MYSQL_RES *mysql_use_result(MYSQL *mysql)
說明
對於成功檢索數據的每個查詢(SELECT、SHOW、DESCRIBE、EXPLAIN),必須調用mysql_store_result()或mysql_use_result()。mysql_use_result()將初始化結果集檢索,但並不像mysql_store_result()那樣將結果集實際讀取到客戶端。它必須通過對mysql_fetch_row()的調用,對每一行分別進行檢索。這將直接從伺服器讀取結果,而不會將其保存在臨時表或本地緩衝區內,與mysql_store_result()相比,速度更快而且使用的記憶體也更少。客戶端僅為當前行和通信緩衝區分配記憶體,分配的記憶體可增加到max_allowed_packet位元組。
另一方面,如果你正在客戶端一側為各行進行大量的處理操作,或者將輸出傳送到了用戶可能會鍵入“^S”(停止滾動)的螢幕,就不應使用mysql_use_result()。這會綁定伺服器,並阻止其他執行緒更新任何表(數據從這類表獲得)。
使用mysql_use_result()時,必須執行mysql_fetch_row(),直至返回NULL值,否則,未獲取的行將作為下一個檢索的一部分返回。C API給出命令不同步錯誤,如果忘記了執行該操作,將不能運行該命令。不應與從mysql_use_result()返回的結果一起使用mysql_data_seek()、mysql_row_seek()、mysql_row_tell()、mysql_num_rows()或mysql_affected_rows(),也不應發出其他查詢,直至mysql_use_result()完成為止。(但是,提取了所有行後,mysql_num_rows()將準確返回提取的行數)。一旦完成了對結果集的操作,必須調用mysql_free_result()。
使用libmysqld嵌入式伺服器時,由於在調用mysql_free_result()之前,記憶體使用將隨著每個檢索的行增加,記憶體效益將基本喪失。
MYSQL_RES結果結構。如果出現錯誤,返回NULL。
錯誤如果成功,mysql_use_result()將復位mysql_error()和mysql_errno()。
· CR_COMMANDS_OUT_OF_SYNC
以不恰當的順序執行了命令。
· CR_OUT_OF_MEMORY
記憶體溢出。
· CR_SERVER_GONE_ERROR
MySQL伺服器不可用。
· CR_SERVER_LOST
在查詢過程中,與伺服器的連線丟失。
· CR_UNKNOWN_ERROR
出現未知錯誤。