代码之家  ›  专栏  ›  技术社区  ›  Haminteu

时间数据类型SQL Server 2008和C#

  •  0
  • Haminteu  · 技术社区  · 10 年前


    我有一个文本框(asp:textbox)。我使用C#.NET和SQL Server 2008 R2作为数据库。我在输入时间时遇到了问题。即08:00、14:00等。
    单击“提交”后,应将其存储到表中。但错误。错误是“ 字符串未被识别为有效的TimeSpan “。字段名为'YourTime',数据类型为time(7)。

    我正在使用sqlcommand将其存储到表中。

    cmd.Parameters.Add("@YourTime", SqlDbType.Time, 7).Value = txtYourTime.Text;
    

    有人可以帮忙吗?
    非常感谢。


    干杯

    2 回复  |  直到 10 年前
        1
  •  1
  •   Richard    10 年前

    最好的方法是将文本(字符串)值从 txtYourTime.Text 进入 TimeSpan 使用 TimeSpan.TryParse .

    通过 CultureInfo (对于 IFormatProvider 参数),反映您的用户(不同的文化使用不同的格式)。这可以确保您控制这些参数,而不是反映服务器设置而不是用户意图的默认值。

    编辑:根据要求提供样品:

    var ci = CultureInfo.GetCultureInfo(Request.UserLanguages[0]);
    TimeSpan ts;
    if (TimeSpan.TryParse(txtYourTime.Text, ci, out ts)) {
      cmd.Parameters.Add("@YourTime", SqlDbType.Time).Value = ts;
    } else {
      // Report invalid input to user.
    }
    
        2
  •  0
  •   user2579857 user2579857    10 年前

    您应该将字符串转换为有效的 TimeSpan 这样地:

    myTime = TimeSpan.Parse(txtYourTime.Text);
    cmd.Parameters.Add("@YourTime", SqlDbType.Time, 7).Value = myTime;