int
mysql_stmt_store_result(MYSQL_STMT *stmt)
结果集是通过调用
mysql_stmt_execute()
执行的 SQL 语句的准备语句生成的,例如
SELECT
、
SHOW
、
DESCRIBE
和
EXPLAIN
。默认情况下,成功执行的预处理语句的结果集不会在客户端进行缓冲,而是
mysql_stmt_fetch()
一次从服务器获取一个结果集。要在客户端缓冲完整的结果集,请
mysql_stmt_store_result()
在绑定数据缓冲区之后
和调用以获取行mysql_stmt_bind_result()
之前调用
。mysql_stmt_fetch()
(例如,参见
第 6.4.11 节,“mysql_stmt_fetch()”。)
mysql_stmt_store_result()
对于结果集处理是可选的,除非您将调用
mysql_stmt_data_seek()
、
mysql_stmt_row_seek()
或
mysql_stmt_row_tell()
。这些函数需要一个可查找的结果集。
mysql_stmt_store_result()
在执行不产生结果集的 SQL 语句后
没有必要调用
,但如果这样做,它不会损害或导致任何显着的性能问题。您可以通过检查是否
mysql_stmt_result_metadata()
返回来检测该语句是否产生了结果集NULL
。有关详细信息,请参阅第 6.4.23 节,“mysql_stmt_result_metadata()”。
默认情况下,MySQL 不会计算
MYSQL_FIELD->max_length
所有列,
mysql_stmt_store_result()
因为计算速度会大大降低,
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()”。
-
命令的执行顺序不正确。
-
记不清。
-
MySQL 服务器已经消失。
-
查询期间与服务器的连接丢失。
-
出现未知错误。