小编典典

在c ++项目中使用mysql_query进行多个查询

sql

因此,这不适用于mysql_query。

我严格使用c ++,并且我没有使用php。

我希望执行此双重查询,以便在由并发用户创建ID的交易系统中,我将始终具有唯一ID。

mysql_query(connection, \
"INSERT INTO User() VALUES ();  SELECT LAST_INSERT_ID(); ");

它可以完美地在MySql数据库中运行,但是我需要将其添加到Eclipse(我正在使用Ubuntu 12.04 LTS)。

我的应用程序很大,如果可能的话,我不想更改为mysqli,但是如果没有其他方法,那就可以了。

你能帮我吗?提前致谢。


阅读 188

收藏
2021-04-28

共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的flags参数设置为mysql_real_connect()等效于CLIENT_MULTI_STATEMENTS
| CLIENT_MULTI_RESULTS。也就是说,CLIENT_MULTI_STATEMENTS足以启用多语句执行和所有多结果处理。

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

告诉服务器客户端可以在单个字符串中发送多个语句(以``;’‘分隔)。如果未设置此标志,则禁用多语句执行。有关此标志的更多信息,请参见此表后面的注释。

请参阅C API对多语句执行的支持22.8.7.53。mysql_real_connect()了解更多详细信息。

2021-04-28