使用TableAdapter与MySQL

时间:2016-03-30 03:20:04

标签: mysql vb.net tableadapter

我在连接到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值。

有没有人知道我可能尝试的任何事情,或者更好的方法来实现这一目标?

谢谢!

1 个答案:

答案 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())