//MYSQL_RES保存查询结构
MYSQL_RES* result_ = NULL;
int error_code = 0; //保存错误码
char error_info[1024] = '\0'; //保存错误信息
//对mysql数据库进行查询操作:
char query_sql[1024] = "select * from db_name.table_name"; //构建查询sql语句
if(result_ != NULL) //防止之前已经被使用过(所有的使用,在使用前都要判空)
{
mysql_free_result(result_);
result_ = NULL;
}
if(link_ == NULL) //防止没有链接
{
//重连,按照建立mysql数据库链接的方法进行建立,前面的blog中有讲到
}
//执行sql查询
if(mysql_query(link_,query_sql) != 0)
{
//查询失败
error_code = mysql_errno(link_); //获取错误码
strncpy(error_info,mysql_error(link_),1024); //获取错误信息
if((error_code == 2013) || (error_code == 2006)) //2006 mysql服务器不可用,2013查询过程中,丢失链接
{
//重链,按照建立mysql数据库链接的方法进行建立
if(//重链失败)
{
return false;
}
//重链成功,再次查询
if(mysql_query(link_,query_sql) != 0)
{
//再次查询失败
error_code = mysql_errno(link_);
strncpy(error_info,mysql_error(link_),1024);
//返回错误
return false;
}
error_code = 0;//查询成功了。
}
}
else
{
//查询成功
}
//查询成功,保存查询结果
result_ = mysql_store_result(link_);
if(result_ == NULL)
{
error_code = mysql_errno(link_); //获取错误码
strncpy(error_info,mysql_error(link_),1024); //获取错误信息
//返回错误
return false;
}
//获取查询结果的行数(记录数)
return mysql_num_rows(result_);
//获取查询结果的字段数
return mysql_num_fields(result_);
//获取查询结果的各个字段的字段名称
MYSQL_FIELD *fields; //保存字段名字信息
unsing int num_fields;
unsigned int i;
num_fields = mysql_num_fields(result); //获取查询结果中,字段的个数
fields = mysql_fetch_fields(result); //获取查询结果中,各个字段的名字
for(i = 0; i < num_fields;i++)
{
printf("field %u is %s\n",i,fields[i].name);
}
//获取查询出来的结果,即遍历查询到的每一行记录
MYSQL_ROW row; //保存行记录信息
unsigned int num_fields;
unsigned int i;
num_fields = mysql_num_fields(result_);
while((row = mysql_fetch_row(result_))) //遍历查询结果中的各行记录
{
unsigned long *lengths = NULL;
lengths = mysql_fetch_lengths(result_); //获取每一个记录行中,每一个字段的长度,在lengths数组中。
for( i = 0; i < num_fields; i++)
{
printf("数据长度%u \t 数据内容%s",lengths[i],row[i]?row[i]:"NULL");
}
printf("\n");
}
//释放资源,断开链接
if(result_ != NULL)
{
mysql_free_result(result_);
result_ = NULL;
}
if(link_ != NULL)
{
mysql_close(link_);
link_ = NULL;
}
原文:http://blog.163.com/xychenbaihu@yeah/blog/static/13222965520113287814447/