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