文档首页
MySQL 8.4 C API 开发者指南
下载本手册
PDF (US Ltr) - 1.4Mb
PDF (A4) - 1.4Mb


5.4.84 mysql_store_result()

MYSQL_RES *
mysql_store_result(MYSQL *mysql)

描述

注意

mysql_store_result() 是一个同步函数。它的异步对应函数是 mysql_store_result_nonblocking(),供需要与服务器进行异步通信的应用程序使用。参见 第 7 章,C API 异步接口

调用 mysql_real_query()mysql_query() 后,必须为每个成功生成结果集的语句(SELECTSHOWDESCRIBEEXPLAINCHECK TABLE 等)调用 mysql_store_result()mysql_use_result()。在使用完结果集后,还必须调用 mysql_free_result()

您无需为其他语句调用 mysql_store_result()mysql_use_result(),但在所有情况下调用 mysql_store_result() 不会造成任何危害或明显的性能下降。您可以通过检查 mysql_store_result() 是否返回非零值来检测语句是否具有结果集(稍后将对此进行详细介绍)。

如果启用多语句支持,则应使用调用 mysql_next_result() 来确定是否有更多结果的循环,从对 mysql_real_query()mysql_query() 的调用中检索结果。有关示例,请参见 第 3.6.3 节,“多语句执行支持”

要确定语句是否返回结果集,请调用 mysql_field_count()。参见 第 5.4.23 节,“mysql_field_count()”

mysql_store_result() 将查询的整个结果读取到客户端,分配一个 MYSQL_RES 结构,并将结果放入此结构中。

如果语句没有返回结果集(例如,如果它是一个 INSERT 语句),或者发生错误并且读取结果集失败,则 mysql_store_result() 返回 NULL

如果没有返回行,则返回一个空结果集。(空结果集不同于作为返回值的空指针。)

在调用 mysql_store_result() 并获取到一个非空指针的结果后,可以调用 mysql_num_rows() 来查找结果集中的行数。

您可以调用 mysql_fetch_row() 从结果集中获取行,或者调用 mysql_row_seek()mysql_row_tell() 来获取或设置结果集中的当前行位置。

参见 第 3.6.9 节,“mysql_query() 成功后 mysql_store_result() 返回 NULL”

返回值

指向包含结果的 MYSQL_RES 结果结构的指针。如果语句没有返回结果集或发生错误,则为 NULL。要确定是否发生错误,请检查 mysql_error() 是否返回非空字符串,mysql_errno() 是否返回非零值,或者 mysql_field_count() 是否返回零。

错误

如果 mysql_store_result() 成功,则重置 mysql_error()mysql_errno()