文档首页
MySQL 9.0 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() 成功后返回 NULL mysql_store_result()”

返回值

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

错误

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