首页 > 解决方案 > TableAdapter.insert - 获取 ID(使用 SCOPE_IDENTITY)?(SQL 服务器)

问题描述

我不知道如何获取使用 tableadapter.insert() 命令创建的记录的 ID。

我阅读了几个类似问题的答案,但大多数都转向如何使用 COMMANDS 和 ADO 或存储过程来解决问题。

我发现最接近的建议是将 SELECT SCOPE_IDENTITY() 添加到 INSERT 语句的末尾。

https://www.screencast.com/t/BU3F73ds

INSERT INTO [zGrid Filters and Layouts]
                     (XML, UserID, Type, Global, LastModDt, SaveName)
VALUES        (@XML,@UserID,@Type,@Global,@LastModDt,@SaveName);  

SELECT        SCOPE_IDENTITY()

但是当我这样做时,当我单击“完成”时出现“无法解析”错误。

https://www.screencast.com/t/7R5MN3cF

然后我还将执行设置为标量。

https://www.screencast.com/t/w91RECeLUL2

如果我绕过这个错误,我会得到一个运行时错误,说我需要声明标量值。

https://www.screencast.com/t/RbNuizo65vu

我已经验证了我的 INSERT (SQL) 代码。事实上,我已经确认它确实在没有 SELECT SCOPE_IDENTITY 行的情况下插入。

Dim ID As Int32 =
    DataTableGridFiltersLayoutsTableAdapter1.InsertRecord(xmlString, 
    1, "F", 1, Now, "My New Block 3")

我在上面包括了结果。

为了澄清,我想使用生成的表适配器来解决这个问题——除非答案是你不能用表适配器来做(这看起来不对)。

我发现无数文章说这是可能的,但没有一篇真正向您展示如何做到这一点——除了 tableadapter.insert 行。

任何帮助表示赞赏。

标签: vb.nettableadapter

解决方案


推荐阅读