2011-05-08 57 views
0

所以我正在构建一个连接到mySQL数据库的C程序。一切都很完美。然后,为了节省查询次数,我决定一次执行10条语句。我在连接中设置了“CLIENT_MULTI_STATEMENTS”标志,并用分号分隔我的语句。mySQL C API多语句

当我执行了第一批10条语句,它成功和mysql_real_query()返回一个0

当我尝试了第二批,虽然,它返回一个“1”,不工作。我无处可以找到这个“1”错误代码的含义,所以我希望以前有人遇到过这个问题。

请注意,这些都是UPDATE语句,所以我不需要结果集,它只是几个直接调用mysql_real_query()。

回答

2

从文档中不清楚该函数可能导致的错误是否会返回,但应该可以使用mysql_error()获取实际错误。

我的猜测是,你还是要遍历结果集,无论你对他们感兴趣或not.`

2

这些准备好的陈述?如果是这种情况,那么你不能使用CLIENT_MULTI_STATEMENTS。

另外,还要注意(从http://dev.mysql.com/doc/refman/5.5/en/c-api-multiple-queries.html)认为:

从 第一条语句的处理结果后,有必要 检查更多结果是否存在, 过程他们反过来如果是这样。为了支持 多结果处理,C API 包括mysql_more_results()和 mysql_next_result()函数。这些 函数用于 循环的末尾,该循环只要有更多 结果可用,就会进行迭代。如果未通过 以这种方式处理结果,则可能导致 与服务器断开连接。

无论您是否在意这些值,您都必须查看所有结果。