Last_Insert_Id 将 TableAdapter 与 MySQL 一起使用时出现问题

Last_Insert_Id issues using TableAdapter with MySQL

我在连接到 MySQL 数据库的 VB.NET TableAdapter 插入查询中使用 Last_Insert_Id 时遇到问题。我已经阅读了本网站和其他网站上关于 Last_Insert_ID 和 Scope_Identity 等的大量帖子。None 对我的情况有效。

一点背景知识,我有两个 table,一个保存登录信息(自动生成的 ID、用户名、密码)。另一个 table 与 ID 值有外键关系,包含 ID、名字、姓氏、城市、州。

在我的 TableAdapter 中,我有一个插入查询,它将值插入第一个 table 并且应该 return ID 值,以便可以在 table 2 上完成插入.

这是我的查询:

INSERT INTO user_logins (user_login, user_pass)  
VALUES (@p1, @p2)

我想添加 Last_Insert_Id 来进行查询

INSERT INTO user_logins (user_login, user_pass)
VALUES (@p1, @p2)
SELECT LAST_INSERT_ID();

然而,无论 ID 是什么,这只会 return 值为 1。如果我打开查询生成器,我会收到一条消息,指出 "Unable to parse query text"。我尝试将 ExecuteMode 更改为 Scalar,但这也没有帮助。

插入部分工作完美,如果我只能在插入后取回 ID 值。

有谁知道我可以尝试什么,或者有更好的方法来实现这个目标吗?

谢谢!

你甚至不需要使用 SELECT LAST_INSERT_ID(); 只需 INSERT INTO user_logins (user_login, user_pass) VALUES (@p1, @p2) 即可 要检索最后插入的 ID,您可以使用两种方式

Dim t As Integer
cmd.ExecuteNonQuery()
t = (Int32) cmd.LastInsertedId

t = Convert.ToInt32(cmd.ExecuteScalar())