我在连接到MySQL数据库的VB.NET TableAdapter插入查询中使用Last_Insert_Id时遇到问题。我已阅读本网站上的大量帖子以及其他有关Last_Insert_ID和Scope_Identity等的帖子。其中没有一个在我的案例中有效。
一点背景,我有两个表,一个保存登录信息(自动生成的ID,用户名,密码)。另一个表在ID值上具有外键关系,包含ID,名字,姓氏,城市,州。
在我的TableAdapter中,我有一个Insert查询,它将值插入到第一个表中,并且应该返回ID值,以便可以在表2上完成Insert。
这是我的查询:
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是什么,它都只返回值1。如果我打开查询生成器,我会收到一条消息,指出"无法解析查询文本"。我尝试将ExecuteMode更改为Scalar,但这也没有帮助。
插入部分工作正常,如果我只能在插入后获取ID值。
有没有人知道我可能尝试的任何事情,或者更好的方法来实现这一目标?
谢谢!
答案 0 :(得分:0)
您甚至不需要使用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
OR
t = Convert.ToInt32(cmd.ExecuteScalar())