例如: 我让用户输入日期
<asp:TextBox ID="date" runat="server" Width="200px" Text = "20110815"></asp:TextBox>
<ajaxToolkit:CalendarExtender ID="CalendarExtender" runat="server" PopupPosition="BottomLeft" PopupButtonID="date"
TargetControlID="date" Format="yyyyMMdd" FirstDayOfWeek="Monday">
</ajaxToolkit:CalendarExtender>
问题是在我的存储过程中,我尝试将该字符串用作日期类型
@StartDate nvarchar(8),
@StartDate_int int =0
AS
BEGIN
select @StartDate_int=CAST(convert(varchar(12),DATEADD(week,DATEDIFF(week,0,@StartDate),0),112) as int)
select * from table where date(has int type)// = @StartDate_int
END
当我尝试在MS Server管理工作室中测试该存储过程时,我为@StartDate = 20110101定义了参数,并且存储过程确实返回了所有已更正的行,但是当我尝试在我的asp.net项目中使用存储过程时,将@StartDate参数设置为文本框中的字符串,它不返回任何行。
<asp:SqlDataSource ID="SqlDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SelectSpecificTimeSheet" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:SessionParameter DefaultValue="user" Name="UserName"
SessionField="loginState" Type="String"/>
<asp:ControlParameter DefaultValue="20110815" ControlID="date" Name="StartDate" PropertyName="Text" Type="String"/>
<asp:Parameter Name="StartDate_int" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
有人能告诉我我做错了什么:(
答案 0 :(得分:0)
几点建议:
您可以使用Sql Profiler查看哪些数据来自Sql server(适用于Enterprise Sql Server的Microsoft Sql Profiler或适用于Sql Server Express的AnjLab Sql Profiler)
创建单独的类以调用sql server(存储库/数据 经理层)并用于访问您的数据 经理 - 通过这种方式,您将始终可以控制正在发生的事情 有
答案 1 :(得分:0)
http://linesofcode.net/snippets/45
看看这些例子。使用Sql Profiler捕获SQL Server的输入是一个好主意,因为@cheburek建议你知道你的服务器页面传递给RDBMS。