繁体   English   中英

如何在asp.net中执行sql server存储过程输入参数?

[英]how to execute sql server stored procedure input parameter in asp.net?

我在sql server中有一个查询,如下所示:

Alter procedure testprocedure
As
Begin
select column_date, sum(qty1), sum(qty2), sum(qty3) from table1
End
Go

我使用下面的代码访问asp.net中的存储过程。 甚至我也从其他来源复制了此代码,但对我有用。

<%@ Page Language="C#" AutoEventWireup="true" %>  

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<script runat="server">  

</script>  
<html xmlns="http://www.w3.org/1999/xhtml" >  
<head id="Head1" runat="server">  
</head>  
<body>  
<form id="form1" runat="server">  
<div>  
    <h2 style="color:Navy; font-style:italic;">GridView Example: Execute StoredProcedure</h2>  
    <asp:SqlDataSource   
        ID="SqlDataSource1"  
        runat="server"  
        ConnectionString="<%$ ConnectionStrings:databasename %>"  
        SelectCommand="testprocedure"  
        SelectCommandType="StoredProcedure"  
        >  
    </asp:SqlDataSource>  
    <asp:GridView   
        ID="GridView1"  
        runat="server"  
        DataSourceID="SqlDataSource1"  
        AutoGenerateColumns="true"  
        AllowPaging="true"  
        PageSize="31"  
        BorderColor="Salmon"  
        Font-Names="Comic Sans MS"  
        Width="650"  
        >  
        <HeaderStyle BackColor="IndianRed" ForeColor="Snow" Height="45"/>  
        <RowStyle BackColor="DarkSalmon" ForeColor="Snow" Font-Italic="true" />  
        <PagerStyle   
            Height="45"   
            HorizontalAlign="Right"   
            BackColor="RosyBrown"  
            Font-Bold="true"  
            Font-Size="X-Large"  
            ForeColor="Snow"  
            />  
        <PagerSettings Mode="Numeric" />  
    </asp:GridView>  
</div>  
</form>  
</body>  
</html> 

现在,我更改了这样的查询以接受参数中的日期:

Alter procedure testprocedure @startdate nchar(8), @enddate nchar(8)
As
Begin
select column_date, sum(qty1), sum(qty2), sum(qty3) from table1
where column_date between @startdate and @enddate
End
Go

请注意,我的日期列的数据类型为nchar(8)。 现在,我想更改上面发布的以前的asp.net代码,以接受该参数作为日期。 我不知道如何编辑代码,因为我是一个非常新的asp.net并仍在学习中。

错误:

 Could not find control 'textboxStartDate' in ControlParameter 'startdate'.

 Description: An unhandled exception occurred during the execution of the current web request.
 Please review the stack trace for more information about the error and where it originated in 
 the code. 

 Exception Details: System.InvalidOperationException: Could not find control 'textboxStartDate'      
 in ControlParameter 'startdate'.

 Source Error: 

 An unhandled exception was generated during the execution of the current web request. 
 Information regarding the origin and location of the exception can be identified using the   
 exception stack trace below.

  Stack Trace: 


 [InvalidOperationException: Could not find control 'textboxStartDate' in ControlParameter          
 'startdate'.]
  System.Web.UI.WebControls.ControlParameter.Evaluate(HttpContext context, Control control)        
 +2106934
 System.Web.UI.WebControls.Parameter.UpdateValue(HttpContext context, Control control) +50
  System.Web.UI.WebControls.ParameterCollection.UpdateValues(HttpContext context, Control
 control) +113
 System.Web.UI.WebControls.SqlDataSource.LoadCompleteEventHandler(Object sender, EventArgs e) +46
 System.Web.UI.Page.OnLoadComplete(EventArgs e) +9008578
 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean 
  includeStagesAfterAsyncPoint) +2350
<asp:SqlDataSource   
        ID="SqlDataSource1"  
        runat="server"  
        ConnectionString="<%$ ConnectionStrings:databasename %>"  
        SelectCommand="testprocedure"  
        SelectCommandType="StoredProcedure">
  <SelectParameters>
     <--for hardcode values  -->
     <asp:Parameter Name="startdate" Type="String" />
     <asp:Parameter Name="enddate" Type="String"/>
     <!-- or values from controls  -->
      <asp:ControlParameter Name="startdate" ControlID="textboxStartDate" PropertyName="Text" /> 
     <asp:ControlParameter Name="enddate" ControlID="textboxEndDate" PropertyName="Text" />               
 </SelectParameters>
</asp:SqlDataSource>

  <asp:TextBox ID="textboxStartDate" runat="server"></asp:TextBox>
    <asp:TextBox ID="textboxEndDate" runat="server"></asp:TextBox>

暂无
暂无

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

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