我是 MySQL 的新手,也是他们的 C++ API并且我在一次执行多个查询而不是两次调用相同的函数时遇到了麻烦,我的意思是我的查询有点链接,并且在逻辑上它们应该一次执行。
例如,我曾经这样做过
sql::ResultSet* sqlExecute(std::string Query)
try
{
sql::ResultSet *res;
res = statement->executeQuery(Query);
return res;
}
catch (sql::SQLException& e)
{
if (e.getErrorCode())
outc("%c%s: [SQL %c%d%c]%c %s\n", c_gray, my_time("WARN"), c_dark_purple, e.getErrorCode(), c_gray, c_dark_red, e.what());
return 0;
}
并这样称呼它(两次)
sqlExecute("alter table ###.players AUTO_INCREMENT = 1;");
sqlExecute("insert into ###.players (name, username, password) values('Random Name', 'imrandom', 'this should be random too');");
但是当我尝试只用一个函数调用来执行它们时 ;
sqlExecute("alter table ###.players AUTO_INCREMENT = 1;insert into ###.players (name, username, password) values('Random Name', 'imrandom', 'this should be random too');");
我得到例外
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在“插入 ###.players (name, username, password) values('Random Name', 'imrand' at line 1
在 MySQL Workbench 中,我可以一次执行多个查询。为什么不在 API 中呢?
执行由分号分隔的多条语句的能力取决于启用的CLIENT_MULTI_STATEMENTS
连接属性:
sql::ConnectOptionsMap options;
options["CLIENT_MULTI_STATEMENTS"] = true;
sql::mysql::MySQL_Driver *driver = sql::mysql::MySQL_Driver::get_mysql_driver_instance();
sql::Connection *con = driver->connect(options);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句