【问题标题】:Getting ID after insert in SQL Server在 SQL Server 中插入后获取 ID
【发布时间】:2012-01-29 10:01:14
【问题描述】:

我使用这个存储过程进行插入并返回插入行的id

ALTER PROCEDURE [dbo].[addObjective]
(
            @Name nvarchar(250)
           ,@ObjectiveGroupId int
           ,@CreatorId int
           ,@LanguageId int
           ,@isFinal bit
)
as 
insert into Objective values
(
            @Name
           ,@ObjectiveGroupId
           ,@CreatorId
           ,GETDATE()
           ,@LanguageId
           ,@isFinal
)

    select scope_identity() as Id;

但是如何使用vb.net代码读取返回的id

使用此命令返回-1

【问题讨论】:

    标签: sql-server vb.net stored-procedures


    【解决方案1】:

    我假设您在 VB.NET 代码中使用了对 .ExecuteNonQuery() 的调用的返回值(您没有向我们展示......所以我只能猜测)。

    这是读取的错误值 - 该值将返回受上一个 SQL 语句影响的行数(例如,受 INSERTUPDATEDELETE 影响)。

    由于您的存储过程 IS 返回一个值 - 新插入的 ID - 并且它返回单行单列值(只是 ID,仅此而已),您需要读取该值 - 例如改为调用.ExecuteScalar()

    Dim newID As Integer = CInt(yourInsertCmd.ExecuteScalar())
    

    【讨论】:

      【解决方案2】:
      select * from (tablename) order by (id) DESC
      for x = 0 to (tablename).rows.count - 1
      savedid = (tablename).rows(x).item("id").tostring
      next 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多