MYSQL_RES *res;
MYSQL_ROW row;
res = mysql_store_result(g_conn);
if(res==NULL)
{
write_log("res is null");
return SQL_FAILED;
}
row = mysql_fetch_row(res);
mysql_free_result(res);
if (row == NULL)
{
write_log("functiont mysql_fetch_row return NULL");
return SQL_FAILED;
}
为何我的日志有时候是提示 :functiont mysql_fetch_row return NULL,也就是说mysql_fetch_row(res);返回的是空,但是res是不为空的,而且我查了数据库,这条记录时存在的,那么可能只有一个:mysql_fetch_row(res)执行出错了!我的推断是对的吗,还是有误区呢?求大侠指点!
MYSQL_ROW row;
res = mysql_store_result(g_conn);
if(res==NULL)
{
write_log("res is null");
return SQL_FAILED;
}
row = mysql_fetch_row(res);
mysql_free_result(res);
if (row == NULL)
{
write_log("functiont mysql_fetch_row return NULL");
return SQL_FAILED;
}
为何我的日志有时候是提示 :functiont mysql_fetch_row return NULL,也就是说mysql_fetch_row(res);返回的是空,但是res是不为空的,而且我查了数据库,这条记录时存在的,那么可能只有一个:mysql_fetch_row(res)执行出错了!我的推断是对的吗,还是有误区呢?求大侠指点!
row = mysql_fetch_row(result);
if (row)
{
......
}
我的解决方案是:
retry=3
int sleep[]={0,1,2,4,8},sleep_id=0;
do{
sleep[id++];
res = mysql_store_result(g_conn);
if(res==NULL)
{
write_log("res is null");
return SQL_FAILED;
}
row = mysql_fetch_row(res);
mysql_free_result(res);
if (row == NULL)
{
write_log("functiont mysql_fetch_row return NULL");
continue;
}
...
break;
}while(--retry);
if(retry) return SQL_SUCCEED;
else return SQL_FAILED;
...
暴力解决了,但是row会出现null确实让人不解!
啥叫有时候提示?
你写的 mysql_fetch_row() 只能取出一条记录。mysql_fetch_row() 函数从结果集中取得一行作为数字数组。
依次调用 mysql_fetch_row() 将返回结果集中的下一行,如果没有更多行则返回 FALSE
循环使用才能一条一条的取到数据。
你能不能讲一下 mysql_store_result 他是干吗用的?我没有用过哎
如果查询未返回结果集,mysql_store_result()将返回Null指针(例如,如果查询是INSERT语句)。如果读取结果集失败,mysql_store_result()还会返回Null指针。通过检查mysql_error()是否返回非空字符串,mysql_errno()是否返回非0值,或mysql_field_count()是否返回0,可以检查是否出现了错误。如果未返回行,将返回空的结果集。(空结果集设置不同于作为返回值的空指针)。
对res指向的内容进行拷贝到row用到mysql_fetch_row,但是row是空的,能说明是mysql_store_result的调用其实没有成功吗?
请高手指教,api到底是怎么实现的呢?