1

我正在创建一个简单的页面,它只是使用 C# 从 .Net 中的文本框中插入一些数据。我收到溢出错误,指出日期必须在特定范围内。在 txtBirthdate 框中输入的文本类似于:01/01/1980。

调试时,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();
}
4

2 回答 2

1

Gregoire 完全正确。我回去看了看,我有一个日期戳,但也在 SQL 中为 getdate() 设置了一个默认值。我想我仍然可以插入而不必传递日期戳值。显然不是。我选择使用 DateTime.Now 从 C# 代码中填充它,这实际上更好!

于 2010-03-10T21:23:01.713 回答
0

如果您要将日期时间插入 SQL-Sever,您可能需要检查其范围,因为 C# DateTime.MinValue 与 SQL DateTime.MinValue 不同。

C# 日期时间最小值 = 1/1/0001

SQL 日期时间最小值 = 1/1/1753

SQL SmallDateTime MinValue = 1/1/1900

C# DateTime 是不可为空的变量类型。因此,在插入 DAL 中的表之前,请确保它不为空。如果为 NULL,则将使用 MinValue(或存储在内存中的任何随机值)。

于 2010-03-10T21:12:09.803 回答