问题是,在C API使用MySQL构建应用程序,连接只能执行存储过程,不管有无再次使用该连接时,将不会有任何查询的提示,我想,这样一个大型软件不存在根本性的问题,毕竟,对ADODB C大多数是基于API,所有软件无法连接缓存

不接触到这类问题,人真的不多,大部分的连接池写了,谁会去直接连接施工操作,所以百度谷歌基本上没有结果回来,今天要解决这个问题,突然有一个突破,找到MySQL C API的存储过程电话和解决分析问题的文章
分析是相当复杂的,事实上,我们一般只mysql_query,mysql_use_result等功能,问题的症结在于执行存储过程时,数据库返回多个数据集,即使只有一个数据集,他也将有一个会议的最后一个空集,作者称他为事实上,可能是不正常的,只考虑一般要求,MySQL是所有用户,不是真的生病的人说图片文件直接存储在MySQL等领域,然后回复不可能一次完成,以网络互动,所以互动当然需要一个符号,和存储程序可以在C Pai返回多个数据集,如果他仅仅是一个结果,有一个新的协议允许对于相同的连接请求,在MySQL服务没有故障发送完整的数据,这个方法是安全的,他不接受任何新的请求,直到数据发送完毕,或连接被关闭,否则,MySQL协议将是一个问题,下一次会有黏黏的或发送数据包损失,所以他的做法是完全正确的,即使只有一个结果集,也需要通信的当前会话(如mysql_next_result)请求的确认后,然后结束,当服务器没有数据,但是这个过程是不能省略的,那么连接没有关闭的情况下可以使新的要求。
结论是:当我们使用存储过程时,我们必须执行循环并收集所有结果集,直到它是空的。此时,可以安全地返回当前数据库连接,下面是演示。
复制代码代码如下所示:
mysql_res * Conn;
mysql_res * RES;
mysql_row排;
conn =连接池。得到(XXXX);

mysql_query(Conn,叫QT());

RES = mysql_use_result(CONN);
而(((行= mysql_fetch_row(RES))){
主要做的东西; / /这是第一个数据集
}
mysql_free_result(RES);
而(((RE = mysql_next_result(CONN))!= NULL){
做一些事情;回收其他数据集
mysql_free_result(RES);
}
连接池的自由(CONN)。

上面的读周期可以确保一个干净的连接将返回到连接池,当然,一些连接池可能已经在连接池处理的循环后面,解释了剩余的数据集的全部和释放,例如在PHP中使用MySQL连接池时,您不觉得上述问题。