2013-10-09 46 views
2

因此,这不适用于mysql_query。在C++项目中使用mysql_query执行多个查询

我严格使用C++,我不使用php。

我希望执行这个双重查询,以便在事务系统中始终有一个唯一标识,并发用户创建标识。它可以在MySql DataBase中完美工作,但我需要将它添加到Eclipse(我正在使用Ubuntu 12.04 LTS)。

我的应用程序是相当大的,我不想更改为mysqli,如果这是可能的,但如果没有其他方式,它会好的。

你能帮我吗?提前致谢。

+0

有人需要我给一个更大的snipet代码?我很乐意这样做。你可以帮我吗?谢谢。 –

回答

1

根据MySQL的C API文档:

MySQL的5.6还支持一个包含多个由分号分隔 语句的字符串的执行(“;”)字符。通过使用mysql_real_connect()将 连接到服务器或连接 调用`mysql_set_server_option()时指定的特殊选项来启用此功能 。

和:

CLIENT_MULTI_STATEMENTS使的mysql_query()和mysql_real_query() 执行包含多个语句的语句串由分号分隔 。此选项也隐式启用CLIENT_MULTI_RESULTS ,因此CLIENT_MULTI_STATEMENTS的标志参数为 mysql_real_connect()等效于参数为 CLIENT_MULTI_STATEMENTS | CLIENT_MULTI_RESULTS。即, CLIENT_MULTI_STATEMENTS足以启用多语句 执行和所有多结果处理。

因此,假设您使用mysql_real_connect设置您的mysql连接有点不同,那么您可以在单个mysql_query()调用中提供多个语句,并用分号分隔。 你需要通过以下标志作为最后一个参数:CLIENT_MULTI_STATEMENTS,其文档说:

告诉客户端可以在 单个字符串发送多条语句的服务器(由“;”分隔)。如果这个标志没有设置, 多语句执行被禁用。有关此标志的更多信息,请参阅此 表后面的注释。

查看C API Support for Multiple Statement Execution22.8.7.53. mysql_real_connect()了解详情。

+0

感谢您的回答。我将参考C API支持扩展查询。亲切的问候。 –