C++MySql获取最后插入的id
C++ MySql get last inserted id
我有以下代码,将一行插入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的。希望能有所帮助。
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 预处理器:插入结构名称中的前一个行号
- 在未初始化映射的情况下,将值插入到映射的映射中
- 如何在c++中只将键插入到bimap的一侧
- 如何将结构插入到集合中并打印集合的成员
- C++json插入数组
- Visual Studio 2019:插入多个C++风格的单行注释
- nlohmann-json将一个数组插入到另一个数组中
- 有效地使用std::unordered_map来插入或增加键的值
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 正在插入动态数组
- 插入或删除时获取usb的dos_name
- 从函数角度看ID到文件路径的内部与外部映射
- 如何使用 QSqlQuery 和 SQLite 从新插入的行中获取 ID
- Oracle使用OCCI和C++获取最后插入的行id
- 如何在另一个表中使用表的上次插入id
- 如何获取插入菜单项时要使用的下一个命令 ID
- C++MySql获取最后插入的id
- DBExpress和mysql最后插入id