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

时间:2015-11-30 20:19:43

标签: 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);

    /*
     * 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?

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

仅供参考,@@identityMSSQL-specific system function,它也返回最后插入ID,但是对于MSSQL,而不是MySQL。

要获取MySQL中的last-insert id,因为您已经专门询问了MySQL,所以需要将SELECT语句更改为以下内容:

SELECT LAST_INSERT_ID() AS id;

另外,由于stmt->execute()stmt->executeQuery()方法将 String 作为输入参数,我相信您不再需要connection->createStatement() 。只是为了确认,我只是用Google搜索并找到了link

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