2010-03-10 2 views
1

У меня есть простая страница, которую я создаю, которая просто вставляет некоторые данные из текстовых полей в .Net с помощью C#. Я получаю ошибку переполнения, указав, что дата должна быть в определенном диапазоне. Текст, введенный в поле txtBirthdate, будет выглядеть примерно так: 01/01/1980.Ошибка переполнения SqlDateTime на простой странице LINQ, C# .Net.

При отладке объект Client1 _Birthdate показывает {1/1/1980 12:00:00}. Поэтому, насколько я могу судить, он делает то, что должен. Заранее благодарю за любую помощь.

protected void Button1_Click(object sender, EventArgs e) 
{ 
    DataClasses1DataContext db = new DataClasses1DataContext(); 

    Client client1 = new Client 
    { 
     FirstName = txtFirstName.Text.ToString(), 
     LastName = txtLastName.Text.ToString(), 
     MiddleInitial = Convert.ToChar(txtMI.Text), 
     Alias = txtAlias.Text.ToString(), 
     Address = txtAddress.Text.ToString(), 
     City = txtCity.Text.ToString(), 
     State = txtState.Text.ToString(), 
     Zip = Convert.ToInt32(txtZip.Text), 
     Phone = txtPhone.Text.ToString(), 
     Birthdate = Convert.ToDateTime(txtBirthdate.Text.ToString()), 
     SSN = Convert.ToInt32(txtSSN.Text), 
     DLNumber = txtDLNumber.Text.ToString(), 
     Gender = Convert.ToByte(ddGender.Text), 
     PrimaryRace = Convert.ToByte(ddPrimaryRace.Text), 
     SecondaryRace = Convert.ToByte(ddSecondaryRace.Text), 
     Ethnicity = Convert.ToByte(ddEthnicity.Text), 
     Veteran = Convert.ToBoolean(ddVeteranStatus.Text), 
     HoH = Convert.ToBoolean(ddHoH.Text) 
    }; 

    db.Clients.InsertOnSubmit(client1); 
    db.SubmitChanges(); 
} 
+0

У вас есть другие столбцы datetime в вашем столе? – Gregoire

ответ

0

Если вы собираетесь вставить DateTime в SQL-Sever, вам, вероятно, нужно проверить его диапазона, потому что C# DateTime.MinValue отличается от SQL DateTime.MinValue.

C# DateTime MinValue = 1/1/0001

SQL DateTime MinValue = 1/1/1753

Также

SQL SmallDateTime MinValue = 1/1/1900

C# DateTime - тип переменной, не подлежащий обнулению. Поэтому убедитесь, что он не равен нулю, прежде чем вставлять в таблицу в свой DAL. Если NULL, будет использоваться MinValue (или любое другое случайное значение, сохраненное в памяти).

1

Грегуар был точно прав. Я вернулся и посмотрел, и у меня была datestamp, но также имела значение по умолчанию, установленное в SQL для getdate(). Я думал, что все еще могу встать без необходимости передавать значение datestamp. Очевидно нет. Я решил заполнить его из кода C#, используя DateTime.Now, который в любом случае лучше!

 Смежные вопросы

  • Нет связанных вопросов^_^