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

时间:2018-08-31 17:12:14

标签: c# sql-server visual-studio

我有一个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());

2 个答案:

答案 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();