繁体   English   中英

将scope_identity()与ASP.NET控件一起使用

[英]Using scope_identity() with ASP.NET controls

我已经构建了一个表单,用于在数据库的表中输入一些数据,现在我想插入该数据,并获取刚刚添加的记录的ID(即自动编号)。 我的INSERT部分工作正常,并且添加了“ SELECT SCOPE_IDENTITY();” 最后,但是现在我需要检索返回的数字。

目前,所有这些操作都是通过SqlDataSource完成的(“ INSERT”语句被放在一起并由代码隐藏文件中的某些C#触发,该C#从页面上的表单获取数据)。

有没有一种快速的方法来获取该数字并将其放入变量中?

SQLDataSource在内部使用ExecuteNonQuery ,这意味着您不能直接检索该值。 一种解决方法是将输出参数传递到SqlataSource的插入参数列表,然后在该变量中设置SCOPE_IDENTITY返回的值。 可以从Inserted事件中检索变量的值。

那是,

  1. 以声明方式将名为Identity的输出参数添加到SqlDatasource的Insert Parameters中
  2. 替换为“ SELECT SCOPE_IDENTITY();” 在插入语句的末尾,带有“ SET @Identity = SCOPE_IDENTITY();”
  3. 现在,可以在“ Inserted”事件中检索@Identity参数的值,如下所示:

    受保护的无效SqlDataSource1_Inserted(对象发送者,SqlDataSourceStatusEventArgs e){

     //Read the value of the @Identity OUTPUT parameter int lastID = e.Command.Parameters["@Identity"].Value; ... 

    }

我相信这段代码可能会有所帮助:

 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM