C++ MySQL获取最后插入的ID
我有以下代码将一行插入mysql数据库并返回插入的id:C++ MySQL获取最后插入的ID,c++,mysql,C++,Mysql,我有以下代码将一行插入mysql数据库并返回插入的id: /* * Execute the statement */ std::string sql = "INSERT INTO TABLE (A, B, C) VALUES (1, 2, 3)"; sql::Statement *stmt; stmt = connection->createStatement(); stmt->execute(sql); /*
/*
* Execute the statement
*/
std::string sql = "INSERT INTO TABLE (A, B, C) VALUES (1, 2, 3)";
sql::Statement *stmt;
stmt = connection->createStatement();
stmt->execute(sql);
/*
* Get the returned id
*/
stmt = connection->createStatement();
sql::ResultSet *res = stmt->executeQuery("SELECT @@identity AS id");
res->next();
model.modelId = res->getInt64("id");
我的问题是:
我真的需要再次调用connection->createStatement吗?
我认为这可能会使代码过载,因为我需要调用两次数据库
有没有办法优化这段代码
是否有其他方法获取最后插入的id
谢谢您的帮助。仅供参考。@@identity is,它还返回最后一个插入id,但对于MSSQL,而不是MySQL
要获取MySQL中的最后一个insert id,由于您专门要求使用MySQL,因此需要将SELECT语句更改为以下内容:
SELECT LAST_INSERT_ID() AS id;
另外,由于stmt->execute和stmt->executeQuery方法将字符串作为输入参数,我确信您不需要再次使用connection->createStatement。为了确认,我在谷歌上搜索了一下,找到了这个
请注意,这个答案是专门针对MySQL的,因为这个问题是关于MySQL的。希望有帮助。仅供参考。@@identity is,它也返回最后一个插入id,但对于MSSQL,而不是MySQL
要获取MySQL中的最后一个insert id,由于您专门要求使用MySQL,因此需要将SELECT语句更改为以下内容:
SELECT LAST_INSERT_ID() AS id;
另外,由于stmt->execute和stmt->executeQuery方法将字符串作为输入参数,我确信您不需要再次使用connection->createStatement。为了确认,我在谷歌上搜索了一下,找到了这个
请注意,这个答案是专门针对MySQL的,因为这个问题是关于MySQL的。希望能有所帮助。您是否尝试过同时执行两个查询,并用分隔符分隔;您是否尝试过同时执行两个查询(以分隔);注意:SELECT LAST_INSERT_ID函数返回上次插入项目的ID;如果未插入该项,这将不会返回预期值。从上次插入\u ID在某些情况下有问题,这就是我使用SELECT@@标识作为ID的原因。有关性能的原始问题没有得到回答…注意:SELECT LAST \u INSERT \u ID函数返回上次插入项的ID;如果未插入该项,这将不会返回预期值。从上次\u INSERT\u ID在某些情况下有问题,这就是我使用SELECT@@标识作为ID的原因。有关性能的原始问题没有得到回答。。。。