我有一个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());
在插入SQL存储过程中,直接SELECT SCOPE_IDENTITY(),或者将输出变量设置为该值。这将为您提供此表的PK。
然后,您可以将该ID用作下一页的查询字符串的一部分。这将允许您加载该页面而无需单独调用数据库,并且您将保证具有正确的ID。
试图找出最后一个id而不使用像这样的特定于范围的东西(例如SCOPE_IDENTITY),会有一个问题,即你可能会收到页面上另一个进程/用户插入的Id,而不是刚刚处理的那个。
我在我的存储过程中添加了这个语句:
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();