表单提交C#后从数据库中检索最新的主键

问题描述 投票:1回答:2

我有一个Webforms项目,我将信息传入数据库。我的问题是,在提交页面后,如何在标签的下一页上检索并显示新创建的ID(主键)?这甚至可能吗?

我有这个代码用于根据我做的旧项目检索ID:

SqlCommand da3 = new SqlCommand(strSelectCmd3, conn);
da3.CommandType = CommandType.StoredProcedure;

SqlDataAdapter ds3 = new SqlDataAdapter();
ds3.SelectCommand = da3;

DataSet dsPerson3 = new DataSet();
ds3.Fill(dsPerson3);

Response.Redirect("Submitted.aspx?ID=" + dsPerson3.Tables[0].Rows[0]["CremationID"].ToString());
c# sql-server visual-studio
2个回答
3
投票

在插入SQL存储过程中,直接SELECT SCOPE_IDENTITY(),或者将输出变量设置为该值。这将为您提供此表的PK。

然后,您可以将该ID用作下一页的查询字符串的一部分。这将允许您加载该页面而无需单独调用数据库,并且您将保证具有正确的ID。

试图找出最后一个id而不使用像这样的特定于范围的东西(例如SCOPE_IDENTITY),会有一个问题,即你可能会收到页面上另一个进程/用户插入的Id,而不是刚刚处理的那个。


1
投票

我在我的存储过程中添加了这个语句:

SELECT TOP (1) CremationID, Last, First
FROM dbo.Cremation
WHERE (Last = @Last) AND (First = @First)
ORDER BY CremationID DESC

然后在新页面上插入一个标签并将此代码放在Page_Load中

CID.Text = Request.QueryString["ID"].ToString();
© www.soinside.com 2019 - 2024. All rights reserved.