mysql_use_result与mysql_store_result异同点

mysql_use_resultmysql_store_result异同点:

  通过mysql_use_result取回结果集时,并没有像mysql_store_result那样实际把结果集读到client. 每行必须通过调用mysql_fetch_row()来取回.server上并没有把结果存储在临时表或者本地的缓冲区中,而是直接从server上读取查询的结果.所以它比mysql_store_result稍微快些,内存使用也相对少些. 这样client分配的内存只需要能满足current row 加上最大可以达到
max_allowed_packet字节大小的communication buffer就足够.

  假如你需要在client端对每行结果做很多的处理,或者输出到用户可以按^s来停止滚屏的屏幕上,那么就不适合用mysql_use_result.因为这样将挂起server和阻止其他thread更新对应数据的表.

  当通过使用mysql_use_result来取回结果时,你必须执行mysql_fetch_row()直到返回NULL,否则未被取回的数据将被包含在下一次查询结果中. 假如你忘记了, c api将给出错误"Commands out of sync; you can't run this command now"!

  通过mysql_use_result来取回所有结果(即mysql_fetch_row()返回NULL)之前,是不能使用msyql_data_seek(),mysql_row_seek(),mysql_row_tell(),mysql_num_rows(),mysql_affected_rows()的.(然而,在取回所有行后,mysql_num_rows()是可以正确返回取回的行数的).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值