访问CodeBehind c# TSQL中的SCOPE_IDENTITY()
本文关键字:IDENTITY SCOPE 中的 CodeBehind TSQL 访问 | 更新日期: 2023-09-27 18:01:30
我试图检索SCOPE_IDENTITY()
并将其放在我可以在代码后面访问的参数中。我的是:
<asp:sqldatasource
id="SqlDataSource1"
runat="server"
connectionstring="<%$ ConnectionStrings:myString %>"
insertcommand="INSERT INTO [CountyHelp](County,City)
VALUES (@County,@City) ;SELECT @Id = SCOPE_IDENTITY()">
<insertparameters>
<asp:formparameter name="County" formfield="County" />
<asp:formparameter name="City" formfield="City" />
<asp:parameter Direction="Output" Name="Id" Type="Int32" />
</insertparameters>
然后通过下面的代码访问它:
protected void btn_send_Click(object sender, SqlDataSourceStatusEventArgs e)
{
string sID = e.Command.Parameters["@Id"].Value.ToString();
SqlDataSource1.Insert();
Response.Redirect("documentsnew.aspx?id=" + sID);
}
可能是我的按钮代码没有发送参数值:
<asp:button
id="Button1"
runat="server"
text="Add Help"
onclick="btn_send_Click"
/>
你得到的错误是因为你使用了错误的EventArgs按钮点击事件。对Click事件使用常规的EventArgs,然后看看会发生什么。
您可以通过处理SqlDataSources Inserted事件来获取Scope_Identity所以
<asp:sqldatasource
id="SqlDataSource1"
OnInserted ="On_Inserted"
runat="server"
connectionstring="<%$ ConnectionStrings:myString %>"
insertcommand="INSERT INTO [CountyHelp](County,City)
VALUES (@County,@City) ;SELECT @Id = SCOPE_IDENTITY()">
<insertparameters>
<asp:formparameter name="County" formfield="County" />
<asp:formparameter name="City" formfield="City" />
<asp:sessionparameter Direction="Output" Name="Id" Type="Int32" />
</insertparameters>
</asp:sqldatasource>
然后protected void btn_send_Click(object sender, EventArgs e)
{
SqlDataSource1.Insert();
}
protected void On_Inserted(Object sender, SqlDataSourceStatusEventArgs e)
{
string sID = e.Command.Parameters["@Id"].Value.ToString();
Response.Redirect("documentsnew.aspx?id=" + sID);
}