C API函数描写叙述(S

时间:2022-02-28 06:48:27

25.2.3.68.?mysql_use_result()

MYSQL_RES *mysql_use_result(MYSQL *mysql)

描写叙述

对付告成检索数据的每一个盘问(SELECTSHOWDESCRIBEEXPLAIN)。必需挪用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

呈现未知错误。