gpt4 book ai didi

c# - 将 DateTime SelectParameter 传递给 SqlDataSource

转载 作者:太空宇宙 更新时间:2023-11-03 19:25:41 24 4
gpt4 key购买 nike

我有一个 GridViewSqlDataSourceSelectCommand 类似于

SELECT * FROM Transfers WHERE Timestamp >= '{0}' AND Timestamp <= '{1}'

SqlDataSource的参数:

<SelectParameters>
<asp:Parameter Name="StartDate" Type="DateTime" />
<asp:Parameter Name="EndDate" Type="DateTime" />
</SelectParameters>

然后在后面的代码中我设置了这个参数:

protected void gvTransfers_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
e.Command.Parameters["@StartDate"].Value = DateTime.Parse(txtStartDate.Text);
e.Command.Parameters["@EndDate"].Value = DateTime.Parse(txtEndDate.Text);
}

我调试了上面的代码,它运行并设置了良好的 DateTime 值。但是当 GridView 被数据绑定(bind)时它会抛出异常

Conversion failed when converting date and/or time from character string.

我花了几个小时研究如何以正确的方式传递 DateTime。我究竟做错了什么?我应该更改 SQL、标记或隐藏代码吗?

我还尝试了 FilterParameters 并从各种格式的文本框中获取日期,但没有成功。

最佳答案

首先,您应该做两件事:

  1. 使用DateTime.TryParse (或 DateTime.TryParseExact )。这将允许您将字符串解析为日期,并获得有关字符串是否已成功解析的信号
  2. 提供某种格式供解析使用。硬编码(如果您要求用户以特定格式输入日期)或传递 CultureInfo可用于确定预期的日期格式。

其次,您应该按照@H27Studio 的建议,将 SQL 查询改为使用参数。

关于c# - 将 DateTime SelectParameter 传递给 SqlDataSource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8923858/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com