【问题标题】:ASP.net DAL get ID of record just insertedASP.net DAL 获取刚刚插入的记录的 ID
【发布时间】:2011-06-17 09:46:12
【问题描述】:
        // Add into DB
        int recordID = 0;
        using (tblArtworkTemplatesTableAdapter tblAdapter = new tblArtworkTemplatesTableAdapter())
        {
            tblAdapter.Insert(DateTime.Now, int.Parse(lstChooseSpec.SelectedValue), Master.loginData.loggedInUser.ID);
            recordID = int.Parse(tblAdapter.GetLastID().ToString());
        }

        // Redirect
        Response.Redirect("artworkDesigner.aspx?ID=" + recordID);

它调用的存储过程是:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[GetLastID]
AS
    SET NOCOUNT ON;
select @@identity FROM tblArtworkTemplates

我似乎无法让它工作,我是这个 DAL 东西的新手,感谢任何帮助!

【问题讨论】:

  • 您可能想改用 SCOPE_IDENTITY。这里有更多信息:msdn.microsoft.com/en-us/library/ms190315.aspx
  • 这是你在 StackOverflow 上真正需要宏的那些 cmets 之一,比如“使用 JQuery”,但你应该看看 Entity Framework ......接线式的代码化为乌有。我做了这么多年的烂摊子,我再也不会回去了。如果您不喜欢 EF,请查看 NHibernate。
  • ... 甚至是普通的旧 LINQ to SQL。

标签: c# asp.net data-access-layer uniqueidentifier


【解决方案1】:

我猜这是 SQL Server?您应该从 INSERT INTO 存储过程返回新插入记录的 ID。有关@@Identity的更多信息,请参阅@@IDENTITY (Transact-SQL)

从存储过程中返回新插入记录的 ID:

SELECT ID AS LastID FROM tblArtworkTemplates WHERE ID = @@Identity; 

有关该主题的更多信息,请参阅How To Get Last Inserted ID On SQL Server

【讨论】:

  • @marc_s 好点,因为@@Identity 不限于特定范围。感谢您的意见。
猜你喜欢
  • 2011-07-31
  • 2017-07-04
  • 1970-01-01
  • 2018-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-23
  • 2011-07-11
相关资源
最近更新 更多