嘿伙计们我一直试图解决这个问题,但我正在尝试将新用户添加到学生表中并且我不断收到错误:将nvarchar数据类型转换为日期时间数据类型导致超出范围的价值。
这是我的代码,我认为它与dob变量有关。我正在使用visual studio 2010。
SqlConnection insertStu = new SqlConnection(ConString());
insertStu.Open();
string dataStu = "INSERT INTO [Student] ([fName], [lName], [dob], [gender], [address],
[suburb], [postcode], [username], [parentName], [parentContact]) VALUES (@fName, @lName,
@dob, @gender, @address, @suburb, @postcode, @username, @parentName, @parentContact)";
SqlCommand insertStuData = new SqlCommand(dataStu, insertStu);
insertStuData.Parameters.AddWithValue("@fName", given.Text);
insertStuData.Parameters.AddWithValue("@lName", surname.Text);
insertStuData.Parameters.AddWithValue("@dob", dob.Text);
insertStuData.Parameters.AddWithValue("@gender", gender.Text);
insertStuData.Parameters.AddWithValue("@address", address.Text);
insertStuData.Parameters.AddWithValue("@suburb", suburb.Text);
insertStuData.Parameters.AddWithValue("@postcode", postcode.Text);
insertStuData.Parameters.AddWithValue("@username", given.Text + surname.Text);
insertStuData.Parameters.AddWithValue("@parentName", pname.Text);
insertStuData.Parameters.AddWithValue("@parentContact", phone.Text);
insertStuData.ExecuteNonQuery();
Response.Redirect("login.aspx");
感谢帮助人员,我使用以下
修复了它DateTime bday = Convert.ToDateTime(dob.Text);
并且在变量收集中我做了以下
insertStuData.Parameters.AddWithValue("@dob", bday);
这是理想的,我还应该做其他事吗?
答案 0 :(得分:0)
insertStuData.Parameters.AddWithValue("@dob", dob.Text);
可能导致了这个问题,请确保dob.Text是DateTime类型 不知道你的表结构,我只是猜测
答案 1 :(得分:0)
如上所述,您使用的是一个字符串,其中包含所需的日期。使用以下内容,当然也有适当的例外情况。
insertStuData.Parameters.AddWithValue("@lName", surname.Text);
/* New Code */
DateTime birthDate = new DateTime();
if(DateTime.TryParse(dob.Text, out birthDate ))
{
insertStuData.Parameters.AddWithValue("@dob", birthDate);
}
else
{
throw new Exception("Date incorectly formatted");
/*Or However you want to handle the incorectly formatted date*/
}
/* End New Code*/
insertStuData.Parameters.AddWithValue("@gender", gender.Text);
如果您绝对100%知道日期格式正确,则可以使用DateTime.Parse
而无需其他变量和if..else..
语句。