从C#到SQL的日期时间错误超出范围
我有一个C#window应用程序来填写出生日期,并用datetime类型将数据发送到我的数据库。代码如下:从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")
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的日期范围都不同。