【问题标题】:Last_Insert_Id issues using TableAdapter with MySQL将 TableAdapter 与 MySQL 一起使用时的 Last_Insert_Id 问题
【发布时间】:2016-03-30 03:20:03
【问题描述】:

我在连接到 MySQL 数据库的 VB.NET TableAdapter Insert 查询中使用 Last_Insert_Id 时遇到问题。我已经阅读了这个网站上的许多帖子以及其他关于 Last_Insert_ID 和 Scope_Identity 等的帖子。在我的情况下,这些帖子都不起作用。

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

在我的 TableAdapter 中,我有一个插入查询,它将值插入到第一个表中,并且应该返回 ID 值,以便可以在表 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 是什么,它都只会返回值 1。如果我打开查询生成器,我会收到一条消息,指出“无法解析查询文本”。我尝试将 ExecuteMode 更改为 Scalar,但这也无济于事。

如果我只能在插入后获取 ID 值,则插入部分工作正常。

有谁知道我可能会尝试什么,或者有什么更好的方法来实现这一点?

谢谢!

【问题讨论】:

    标签: mysql vb.net tableadapter


    【解决方案1】:

    您甚至不需要使用 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())
    

    【讨论】:

    • 我最终放弃了 TableAdapter 的想法,并使用类似的东西在代码中创建/执行连接和查询。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-23
    • 2019-04-08
    • 1970-01-01
    • 2014-07-12
    • 2010-11-06
    • 2016-11-10
    相关资源
    最近更新 更多