您的位置:首页 > 编程语言 > C语言/C++

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

2016-04-01 00:01 501 查看
网上的资料里说明的是,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;
}


执行结果如下:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: