Ошибка переполнения SqlDateTime на простой веб-странице LINQ, C # .Net - PullRequest
1 голос
/ 10 марта 2010

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

При отладке объект Client1 _Birthdate показывает {01.01.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();
}

Ответы [ 2 ]

1 голос
/ 11 марта 2010

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

0 голосов
/ 11 марта 2010

Если вы собираетесь вставить дату и время в SQL-сервер, вам, вероятно, потребуется проверить его диапазон, поскольку 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 - тип переменной, который не может иметь значение NULL. Поэтому убедитесь, что он не равен нулю, прежде чем вставлять его в таблицу в вашем DAL. Если NULL, будет использоваться MinValue (или любое другое случайное значение, хранящееся в памяти).

...