日期:2014-05-16  浏览次数:20741 次

mysql C API 多语句插入数据问题
打开连接时用mysql_real_connect(),传递参数CLIENT_MULTI_STATEMENTS以支持多语句查询
每执行mysql_query()来插入数据后,调用以下函数来清空返回结果集,以避免2014错误
void clear_result(MYSQL* conn)
{
if(!conn)
return;
do
{
MYSQL_RES* res = mysql_store_result(conn);
mysql_free_result(res);
}
while(0==mysql_next_result(conn));
}

但为什么一个查询里有三条insert into语句时,这个函数就会莫明其妙的崩掉,不明白
用gdb跟踪了好多遍,发现最后一遍循环时,调用mysql_next_result()后,conn这个结构里的数据全部都被破坏了
都是无效地址,请高手帮帮忙

------解决方案--------------------
探讨
do
{
MYSQL_RES* res = mysql_store_result(conn);
mysql_free_result(res);
}
while(0==mysql_next_result(conn));
}