我已经构建了一个用于将一些数据输入到我的数据库中的表中的表单,现在我想插入该数据,并取回刚刚添加的记录的 ID(这是一个自动编号)。我的 INSERT 部分工作得很好,我已经添加了“SELECT SCOPE_IDENTITY();”到最后,但现在我需要检索返回的号码。
目前,所有这些都是通过 SqlDataSource 完成的(将“INSERT”语句放在一起并由代码隐藏文件中的某些 C# 触发,它从页面上的表单中获取数据)。
有没有一种快速获取该数字并将其放入变量的方法?
最佳答案
SQLDataSource 使用 ExecuteNonQuery在内部,这意味着您无法直接检索该值。解决方法是将输出参数传递给 SqlataSource 的插入参数列表,然后在该变量中设置 SCOPE_IDENTITY 返回的值。可以从 Inserted 中检索变量的值事件。
也就是说,
- 以声明方式将名为 Identity 的输出参数添加到您的 SqlDatasource 的插入参数
- 替换“SELECT SCOPE_IDENTITY();”在插入语句的末尾加上“SET @Identity = SCOPE_IDENTITY();”
现在可以在“已插入”事件中检索@Identity 参数的值,如下所示:
protected void SqlDataSource1_Inserted(object sender, SqlDataSourceStatusEventArgs e) {
//Read the value of the @Identity OUTPUT parameter int lastID = e.Command.Parameters["@Identity"].Value; ...
}
关于c# - 将 scope_identity() 与 ASP.NET 控件一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2087947/