10bet网址
MySQL 5.6 C API开发指南
本手册下载
PDF (Ltr)- 1.1 mb
PDF (A4)- 1.1 mb
HTML下载(TGZ)- 135.1 kb
HTML下载(邮政编码)- 144.8 kb


5.4.74 mysql_use_result ()

MYSQL_RES * mysql_use_result(MYSQL * MYSQL)

描述

后调用mysql_real_query ()mysql_query (),你必须打电话mysql_store_result ()mysql_use_result ()对于成功生成结果集的每个语句(选择显示描述解释检查表等等)。您还必须调用mysql_free_result ()在您处理完结果集之后。

mysql_use_result ()初始化结果集检索,但不像实际读取结果集到客户端mysql_store_result ()所做的事。相反,必须通过调用来单独检索每一行mysql_fetch_row ().这将直接从服务器读取查询结果,而不将其存储在临时表或本地缓冲区中,这比直接从服务器读取查询结果快一些,并且使用的内存要少得多mysql_store_result ().客户端仅为当前行分配内存和一个通信缓冲区,该缓冲区可能增长到max_allowed_packet字节。

另一方面,你不应该使用mysql_use_result ()对于锁定读取,如果您正在对客户端上的每一行进行大量处理,或者输出被发送到用户可能键入a的屏幕^年代(停止滚动)。这将绑定服务器,并阻止其他线程更新从其中获取数据的任何表。

当使用mysql_use_result (),则必须执行mysql_fetch_row ()直到一个值,否则,未提取的行将作为下一个查询的结果集的一部分返回。C API给出了错误命令不同步;现在不能运行此命令如果你忘了这么做!

你不能使用mysql_data_seek ()mysql_row_seek ()mysql_row_tell ()mysql_num_rows (),或mysql_affected_rows ()返回的结果mysql_use_result (),也不能发出其他查询,直到mysql_use_result ()已经完成了。(但是,在获取所有行之后,mysql_num_rows ()准确地返回已获取的行数。)

你必须叫mysql_free_result ()一旦你完成了结果集。

当使用libmysqld在嵌入式服务器中,由于内存使用量随着每一行的检索而递增,直到mysql_free_result ()被称为。

返回值

一个MYSQL_RES结果结构。如果出现错误。

错误

mysql_use_result ()重置mysql_error ()mysql_errno ()如果它成功。