我正在构建一个C#ASP.NET页面,我想在数据库中调用存储过程。
我已设置SqlDataSource
指向存储过程。参数直接从Web控件中获取(TextBox)
我有一个按钮,当用户点击它时它应该运行存储过程,所以我要添加这样的代码:
mySqlDataSource.run()
或
mySqlDataSource.exec()
或
mySqlDataSource.storedProcedure()
但当然不存在这些方法。
如何初始化存储过程?如何获取存储过程返回的值?
谢谢!
答案 0 :(得分:11)
我认为您正在寻找的方法是DataBind
。使用mySqlDataSource.DataBind()
<asp:SqlDataSource
ID="sds2"
runat="server"
ConnectionString="..."
SelectCommand="spTest"
SelectCommandType="StoredProcedure"
>
<SelectParameters>
<asp:ControlParameter ControlID="TextBox1" PropertyName="Text"
Name="ParamName" Type="Int32" DefaultValue="0" />
</SelectParameters>
</asp:SqlDataSource>
<asp:GridView ID="gv" runat="server" DataSourceID="sds2"></asp:GridView>
调用DataBind
时执行存储过程。如果GridView控件的DataSourceID属性引用有效的数据源控件,则会自动调用DataBind方法。
答案 1 :(得分:1)
//HTML:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:testConnectionString %>"
onselecting="SqlDataSource1_Selecting" SelectCommand="testProc_sp"
SelectCommandType="StoredProcedure"></asp:SqlDataSource>
<br />
<asp:Button ID="Button3" runat="server" onclick="Button3_Click" Text="Button" />
//c#:
protected void Button3_Click(object sender, EventArgs e)
{
SqlDataSource1.DataBind();
}
答案 2 :(得分:0)
从sqldatasource初始化SP非常简单:
mySqlDataSource.UpdateCommandType = SqlDataSourceCommandType.StoredProcedure;
mySqlDataSource.UpdateCommand = "sp_name";
mySqlDataSource.Update();
要从SP获取返回值,我建议使用SqlCommand:
http://forums.asp.net/t/1177022.aspx
确保将ParameterDirection设置为ReturnValue或Output
创建参数