C++MySql获取最后插入的id

C++ MySql get last inserted id

本文关键字:id 插入 最后 获取 C++MySql      更新时间:2023-10-16

我有以下代码,将一行插入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是MSSQL特定的系统函数,它也返回最后一个插入id,但用于MSSQL,而不用于MySQL。

为了在MySQL中获得最后一个插入id,由于您已经专门要求MySQL,您需要将SELECT语句更改为以下内容:

SELECT LAST_INSERT_ID() AS id;

此外,由于stmt->execute()stmt->executeQuery()方法采用String作为输入参数,我确信您不需要再次使用connection->createStatement()。只是为了确认一下,我只是在谷歌上搜索了一下,找到了这个链接。

请注意,这个答案是专门针对MySQL的,因为这个问题是关于MySQL的。希望能有所帮助。