我已经构建了一个表单,用于将一些数据输入到我的数据库中的表中,现在我想要插入该数据,并获取刚刚添加的记录的ID(这是一个自动编号)。我已经让INSERT部分正常工作,并且我已经添加了“SELECT SCOPE_IDENTITY();”到最后,但现在我需要检索返回的数字。
目前所有这一切都是通过SqlDataSource完成的(将“INSERT”语句放在一起并由代码隐藏文件中的某些C#触发,该文件从页面上的表单中获取数据)。
是否有快速获取该数字并将其放入变量的方法?
答案 0 :(得分:2)
SQLDataSource在内部使用ExecuteNonQuery,这意味着您无法直接检索该值。解决方法是将输出参数传递给SqlataSource的插入参数列表,然后在该变量中设置SCOPE_IDENTITY返回的值。可以从Inserted事件中检索变量的值。
即,
现在可以在“已插入”事件中检索@Identity参数的值,如下所示:
受保护的虚空 SqlDataSource1_Inserted(对象发送者, SqlDataSourceStatusEventArgs e){
//Read the value of the @Identity OUTPUT parameter int lastID = e.Command.Parameters["@Identity"].Value; ...
}
答案 1 :(得分:1)
我相信这段代码可能有所帮助:
protected void SqlDataSource1_Inserted(object sender, SqlDataSourceStatusEventArgs e)
{
//Read the value of the @Identity OUTPUT parameter
string sID = e.Command.Parameters["@Identity"].Value.ToString();
//Display new ID
Label1.Text = sID;
}
那是来自this blog post