对于每个可以产生一个结果集的命令(比如select、show、describe, explain, check_table等等),发起mysql_query或者mysql_real_query之后,你都需要调用mysql_store_result或者mysql_use_result语句,处理完结果集后需要使用mysql_free_result释放。

Mysql_use_result初始化一个取回结果集但是它并不像mysql_store_result那样实际的读取结果放到客户端。相反,每一个列结果都是通过调用mysql_fecth_row独立取回的。它直接从服务器读取一个查询的结果而不是存储它到一个临时表或者一个客户端的缓存里面。因此对于mysql_use_result而言它比mysql_store_result快一些并且使用更少的内存。客户端只有在当前的列或者通信的缓存即将超过max_allowed_packet才申请内存。

另外方面有些情况你不能使用mysql_use_result接口,当你对于每一列在客户端要做很多的的处理,或者输出发生到屏幕用户可能通过ctrl-s退出,这样会挂起服务器,而阻止其他线程去更新客户端正在获取数据的这些表。

当使用mysql_use_result时,你必须执行mysql_fetch_row直到NULL值返回。否则那些没有被获取的列将作为你下个请求的一部分返回。如果你忘了这个部分,对于C的API接口将报错” Commands out of sync; you can'trun this command now”。

你最好不要对mysql_use_result的结果,调用mysql_data_seek(),mysql_row_seek(),mysql_row_tell(),mysql_num_rows或者mysql_affected_row(),也不要在mysql_use_result没有结束的时候发起其他的请求(当你已经获取所以列以后,mysql_num_rows可以正确返回你获取的列数)。

一旦你处理完所有的结果集,你必须调用mysql_free_result去释放。

https://dev.mysql.com/doc/refman/8.0/en/mysql-use-result.html

MySQL官网文档介绍

mysql_use_result的使用的更多相关文章

  1. 使用 mysql_use_result 还是使用 mysql_store_result?

    From: http://my.oschina.net/moooofly/blog/186456 本文整理了关于“使用 mysql_use_result 还是 mysql_store_result”的 ...

  2. mysql_use_result & mysql_store_result & MYSQLI_ASYNC

    博文一 : 在使用 mysql_query() 进行一次查询后,一般要用这两个函数之一来把结果存到一个 MYSQL_RES * 变量中. 两者的主要区别是,mysql_use_result() 的结果 ...

  3. MySQL数据库备份--mysqldump用法

    导出要用到MySQL的mysqldump工具,基本用法是:   shell> mysqldump [OPTIONS] database [tables] 如果你不给定任何表,整个数据库将被导出. ...

  4. LoadRunner访问Mysql数据库

    这是很久以前编写的一个测试案例,那时是为了检查大量往Mysql数据库里插入数据,看一下数据库的性能如何?服务器是否会很快就被写满了. 前期的准备工作:Mysql 数据库搭建,LoadRunner,li ...

  5. MySQL数据库在linux的安装,编程与操作

    一.安装 ubuntu上安装MySQL非常简单只需要几条命令就可以完成. 1. sudo apt-get install mysql-server   2. apt-get isntall mysql ...

  6. MYSQL使用mysqldump导出某个表的部分数据

    命令格式如下: mysqldump -u用户名 -p密码 数据库名 表名 --where="筛选条件" > 导出文件路径 例子: 从meteo数据库的sdata表中导出sen ...

  7. Ubuntu 安装mysql和简单操作

    http://www.cnblogs.com/zhuyp1015/p/3561470.html ubuntu上安装mysql非常简单只需要几条命令就可以完成. 1. sudo apt-get inst ...

  8. mysql C API的使用

    <MySQL++简介>介绍了如何使用C++来访问mysql,本文记录下使用C API访问mysql,mysql++就是对本文介绍的C-API的封装. 常用函数(名字就能告诉我们用法): M ...

  9. 转 用C API 操作MySQL数据库

    用C API 操作MySQL数据库 参考MYSQL的帮助文档整理 这里归纳了C API可使用的函数,并在下一节详细介绍了它们.请参见25.2.3节,“C API函数描述”. 函数 描述 mysql_a ...

随机推荐

  1. jquery 添加列

    {field:'action',title:'操作',width:70,align:'center',  formatter:function(value,row,index){  if (row.e ...

  2. nats

    NATS is a family of open source products that are tightly integrated but can be deployed independent ...

  3. CSS 分页实例

    CSS 分页实例 一.简单分页 如果你的网站有很多个页面,你就需要使用分页来为每个页面做导航. 以下实例演示了如何使用 HTML 和 CSS 来创建分页: <!DOCTYPE html> ...

  4. c++标准库vector&list使用练习

    /* vector顺序存储,随机访问快 list链表存储,插入删除快 deque占用内存多,兼具两者优点 注意: 1.vector严格顺序存储 2.list的迭代器只能做++或--运算,要一次移动多个 ...

  5. 20155201 实验四《Java面向对象程序设计》实验报告

    20155201 实验四<Java面向对象程序设计>实验报告 一.实验内容 1.基于Android Studio开发简单的Android应用并部署测试; 2.了解Android.组件.布局 ...

  6. ubuntu18.04下搭建深度学习环境anaconda2+ cuda9.0+cudnn7.0.5+tensorflow1.7【原创】【学习笔记】

    PC:ubuntu18.04.i5.七彩虹GTX1060显卡.固态硬盘.机械硬盘 作者:庄泽彬(欢迎转载,请注明作者) 说明:记录在ubuntu18.04环境下搭建深度学习的环境,之前安装了cuda9 ...

  7. 学习maven,看思维导图就够了

    一直在用 Mindjet MindManager和xmind 做思维导图.以前在用思维导图写读书笔记时,总是想要事无巨细地写清楚每个知识点,现在想来是事倍功半.思维导图应该是一个帮助我们梳理知识点.理 ...

  8. XML_Qt_资料

    1.QXmlQuery Class _ Qt XML Patterns 5.7.html http://doc.qt.io/qt-5/qxmlquery.html ZC: evaluateTo(QAb ...

  9. Hadoop Ambari 安装

    ambari 1.2.4 下载地址:http://www.apache.org/dist/incubator/ambari/ambari-1.2.4/ambari-1.2.4-incubating.t ...

  10. UVA-1617 Laptop (贪心)

    题目大意:有n条长度为1的线段,n个区间,第i条线段在第i个区间中,问线段之间的最少间隙有几个. 题目分析:先对区间排序,先按右端点排,再按左端点排.有重叠的区间(仅有交点重叠也视为重叠)之间一定可以 ...