mysql c connector 多条sql语句执行示例

Posted 罗曼骑士

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql c connector 多条sql语句执行示例相关的知识,希望对你有一定的参考价值。

 

//  假设参数 sql已经包含多条sql语句。如 sql = "insert into table1(...) values(...); update table2 set a=1;";  

 

const bool CDBOperator::MultiQuery(const std::string sql, std::string& error)

{
int res = 0;
bool ret = false;
mysql_RES* result = NULL;
std::string e;
try
{
//disable autocommit
if(!AutoCommit(AUTOCOMMIT_DISABLE, error))
{
return false;
}
res = mysql_real_query(m_mysql, sql.c_str(), sql.length());
// if query fail
if(0 != res)
{
error = mysql_error(m_mysql);
Rollback(e);
AutoCommit(AUTOCOMMIT_ENABLE, e);
return false;
}
do
{
/* did current statement return data? */
result = mysql_store_result(m_mysql);
if (result) {
mysql_free_result(result);
} else { /* no result set or error */
if (mysql_field_count(m_mysql) == 0) {
printf("%lld rows affected\n",
mysql_affected_rows(m_mysql));
} else { /* some error occurred */
printf("Could not retrieve result set\n");
break;
}
}
/* more results? -1 = no, >0 = error, 0 = yes (keep looping) */
if ((res = mysql_next_result(m_mysql)) > 0)
printf("Could not execute statement\n");
} while (res == 0);
ret = Commit(error);
AutoCommit(AUTOCOMMIT_ENABLE, e);
if(!ret)
{
return false;
}
return true;
}
catch(...)
{
error = mysql_error(m_mysql);
return false;
}

以上是关于mysql c connector 多条sql语句执行示例的主要内容,如果未能解决你的问题,请参考以下文章

mysql.connector.errors.ProgrammingError: 1064 (4200): 你的 SQL 语法有错误;

mysql 多张表做左连接操作 SQL应该如何写

mysql.connector.errors.ProgrammingError: 1064 (42000): 尝试创建表时 SQL 语法有错误

这条SQL语句怎么写

mysql-connector-c++ - ‘get_driver_instance’ 不是 ‘sql::mysql’ 的成员

mysql怎么一次执行多条SQL语句