25.2.3.68.?mysql_use_result()
MYSQL_RES *mysql_use_result(MYSQL *mysql)
描写叙述
对付告成检索数据的每一个盘问(SELECT、SHOW、DESCRIBE、EXPLAIN)。必需挪用mysql_store_result()或mysql_use_result()。
mysql_use_result()将初始化功效集检索,但并不像mysql_store_result()那样将功效集实际读取到client。它必需通过对mysql_fetch_row()的挪用,对每一行分袂进行检索。
这将直接从server读取功效,而不会将其生存在暂时表或本地缓冲区内,与mysql_store_result()对比,速度更快并且使用的内存也更少。client仅为当前行和通信缓冲区分配内存,分配的内存可添加到max_allowed_packet字节。
还有一方面,假设你正在client一側为各行进行大量的措置惩罚惩罚操纵,或者将输出发送到了用户可能会键入“^S”(遏制滚动)的屏幕,就不应使用mysql_use_result()。
这会绑定server,并阻止其它线程更新岂论什么表(数据从这类表获得)。
使用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嵌入式server时。因为在挪用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
MySQLserver不成用。
·????????CR_SERVER_LOST
在盘问过程中,与server的连接丢掉。
·????????CR_UNKNOWN_ERROR
呈现未知错误。