mysql的C++ API之mysql_use_result()的用法实例

    网上的资料里说明的是,mysql_store_result()是把查询全部做完,然后一次性将查询结果返回给连接的客户端,而mysql_use_result()是逐条进行查询,逐条将结果返回给客户端,直到结果全部返回完毕。所以对于查询的数据量(数据记录树多,每条记录的数据也很大)特别大的情形时,如果运用mysql_store_result(),会因为执行查询需要消耗很长时间而导致查询“假死”。这时运用mysql_use_result()是个很好的选择。以下是mysql_use_result()的用法实例。

       

#include<iostream>
#include<WinSock2.h>
#include"mysql.h"
using namespace std;

int main()
{
	MYSQL* mysql;
	MYSQL_RES* res;
	MYSQL_ROW row;
	char* queryCmd = "select * from inforoll";
	int t,r,c;
	mysql=mysql_init(0);
	if(!(mysql_real_connect(mysql,"localhost","root","1234","roll6",3306,NULL,0)))
	{
		printf("connect database roll6 error:%s\n",mysql_error(mysql));
	}
	else
		printf("connected...\n");
	t = mysql_query(mysql,queryCmd);
	if(t)
	{
		printf("make query error: %s\n",mysql_error(mysql));
	}
	else
	{
		printf("query made...\n");
		res = mysql_use_result(mysql);

	if(res)
	{
		//int j = mysql_num_rows(res);如果这样写就只能查询出一行结果
		//for(r=0;r<=mysql_num_rows(res);++r)
		while(row = mysql_fetch_row(res))
		{
			//row = mysql_fetch_row(res);
			if(row==NULL)
				break;
			for(t=0;t<mysql_num_fields(res);++t)
				printf("%s ",row[t]);
			printf("\n");
		}
	}
	mysql_free_result(res);
	}
	mysql_close(mysql);	
	cout<<"Done"<<endl;
	return 0;
}


执行结果如下:





  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值