按钮单击在SqlDataSource中运行存储过程

时间:2012-10-19 02:56:56

标签: c# asp.net sql-server stored-procedures sqldatasource

我正在构建一个C#ASP.NET页面,我想在数据库中调用存储过程。

我已设置SqlDataSource指向存储过程。参数直接从Web控件中获取(TextBox)

我有一个按钮,当用户点击它时它应该运行存储过程,所以我要添加这样的代码:

mySqlDataSource.run()

mySqlDataSource.exec()

mySqlDataSource.storedProcedure()

但当然不存在这些方法。

如何初始化存储过程?如何获取存储过程返回的值?

谢谢!

3 个答案:

答案 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

创建参数