6.4.29 mysql_stmt_store_result()

int
mysql_stmt_store_result(MYSQL_STMT *stmt)

说明

结果集是通过调用 mysql_stmt_execute() 来执行预处理语句生成的,这些语句包括 SELECTSHOWDESCRIBEEXPLAIN。默认情况下,成功执行的预处理语句的结果集不会缓存在客户端,并且 mysql_stmt_fetch() 会从服务器一次获取一行。要将完整的结果集缓存在客户端,请在使用 mysql_stmt_bind_result() 绑定数据缓冲区之后,以及在调用 mysql_stmt_fetch() 获取行之前调用 mysql_stmt_store_result()。(有关示例,请参阅 第 6.4.12 节“mysql_stmt_fetch()”。)

mysql_stmt_store_result() 对于结果集处理是可选的,除非您要调用 mysql_stmt_data_seek()mysql_stmt_row_seek()mysql_stmt_row_tell()。这些函数需要可查找的结果集。

在执行不产生结果集的 SQL 语句之后,无需调用 mysql_stmt_store_result(),但如果您这样做,也不会造成任何损害或明显的性能问题。您可以通过检查 mysql_stmt_result_metadata() 是否返回 NULL 来检测该语句是否生成了结果集。有关更多信息,请参阅 第 6.4.24 节“mysql_stmt_result_metadata()”

注意

默认情况下,MySQL 不会为 mysql_stmt_store_result() 中的所有列计算 MYSQL_FIELD->max_length,因为计算此值会大大降低 mysql_stmt_store_result() 的速度,并且大多数应用程序不需要 max_length。如果您希望更新 max_length,可以调用 mysql_stmt_attr_set(MYSQL_STMT, STMT_ATTR_UPDATE_MAX_LENGTH, &flag) 来启用此功能。请参阅 第 6.4.3 节“mysql_stmt_attr_set()”

返回值

成功返回零。如果发生错误,则返回非零值。

错误