C++ 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); /*

我有以下代码将一行插入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);

    /*
     * 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的原因。有关性能的原始问题没有得到回答。。。。