27.7.10.28 mysql_stmt_store_result()
int mysql_stmt_store_result(MYSQL_STMT *stmt)
Description
通过调用mysql_stmt_execute()来执行已执行的 SQL 语句(例如SELECT,SHOW,DESCRIBE和EXPLAIN)的预准备语句来生成结果集。默认情况下,成功执行的准备好的语句的结果集不会在 Client 端上缓冲,并且mysql_stmt_fetch()一次从服务器获取它们。要使完整的结果集在 Client 端上缓存,请在将数据缓冲区与mysql_stmt_bind_result()绑定之后并在调用mysql_stmt_fetch()提取行之前调用mysql_stmt_store_result()。 (有关示例,请参见第 27.7.10.11 节“ 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
来检测语句是否产生了结果集。有关更多信息,请参考第 27.7.10.23 节,“ mysql_stmt_result_metadata()”。
Note
默认情况下,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)启用此功能。参见第 27.7.10.3 节“ mysql_stmt_attr_set()”。
Return Values
零成功。如果发生错误,则为非零值。
Errors
命令执行 Sequences 不正确。
记不清。
MySQL 服务器已经消失了。
在查询期间与服务器的连接已丢失。
出现未知错误。