试图在asp.net中向表中添加新记录

时间:2013-10-30 03:19:15

标签: asp.net sql visual-studio-2010

嘿伙计们我一直试图解决这个问题,但我正在尝试将新用户添加到学生表中并且我不断收到错误:将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);

这是理想的,我还应该做其他事吗?

2 个答案:

答案 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..语句。