从C#到SQL的日期时间错误超出范围

从C#到SQL的日期时间错误超出范围,c#,sql,datetime,C#,Sql,Datetime,我有一个C#window应用程序来填写出生日期,并用datetime类型将数据发送到我的数据库。代码如下: DateTime dateOfBirth; try { dateOfBirth = new DateTime(int.Parse(textBox54.Text), int.Parse(textBox53.Text), int.Parse(textBox52.Text)); } catch (Exception ex) { MessageBox.Show("Invalid")

我有一个C#window应用程序来填写出生日期,并用datetime类型将数据发送到我的数据库。代码如下:

DateTime dateOfBirth;
try
{
    dateOfBirth = new DateTime(int.Parse(textBox54.Text), int.Parse(textBox53.Text), int.Parse(textBox52.Text));
}
catch (Exception ex)
{
    MessageBox.Show("Invalid");
    return;
}
它在适当的日期下运行良好,但当我随机测试我的应用程序并填写“234”作为年份时,语句中会出现datetime from varchar conversion out range错误

cm.ExecuteNonQuery();

我怎样才能抓住它?谢谢。

您可以使用DateTime.TryParseExact:

更新:

    string inputDate = int.Parse(textBox54.Text)+"-"+int.Parse(textBox53.Text)+"-"+int.Parse(textBox52.Text);
    DateTime dateOfBirth ;

    var DateFormat = new[] { "dd/MM/yyyy", "yyyy-MM-dd" };
    if (DateTime.TryParseExact(inputDate, DateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateOfBirth ))
    {

       //Valid Date
      //Call DB here
    }
    else
    {

        // Invalid Date
    }

你也可能对这个链接感兴趣。您是否尝试过将ExecuteOnQuery包装到try/catch块中?向我们展示完整的代码。您将它传递到数据库的位置/方式?我使用常规sql语句传递它,例如:insert into MyTable(DateOfBirth)值(“+DateOfBirth+”)谢谢Mixxiphoid,它可以工作。@Habib您是对的。更新答案。这将首先检查inputDate是否为有效日期,然后可用于进一步处理。当我为年份输入“234”时,它仍然无法捕获错误,因为它是C#的有效日期,但不是SQL@KenClark,这里的问题不是解析C#中的日期,它是关于SQL server引发异常的,因为.Net framework和SQL server的日期范围都不同。