我正在创建一个简单的页面,只是使用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();
}
答案 0 :(得分:1)
Gregoire完全正确。我回去看了,我有一个日期戳,但在SQL中为getdate()设置了一个默认值。我以为我仍然可以插入而不必传递datestamp值。显然不是。我选择使用DateTime.Now从C#代码填充它,无论如何它实际上更好!
答案 1 :(得分:0)
如果您要将日期时间插入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(或存储在内存中的任何随机值)。