将语句更新为文本框c#数据类型在标准中不匹配

时间:2015-04-24 21:47:56

标签: c#

尝试使用更新语句,但当我执行该程序时,它声称: 用户类型数据标准不匹配

当我点击updatebutton时,我希望数据库更新ID =

private void Update_Click(object sender, EventArgs e)
{
    //OPENING CONNECTION

    db.Open();
    int idd = int.Parse( InstructorIDText.Text);

    OleDbCommand df = new OleDbCommand("UPDATE Instructors SET FirstName='"+FNText.Text+"',LastName='"+Lntext.Text+"',Street='"+StreetText.Text+"',City='"+CityText.Text+"',State='"+StateText.Text+"',Zip='"+ZipText.Text+"',Office='"+OfficeText.Text+"',EMail='"+EmailText.Text+"' WHERE ID = " + idd +"", db);
    //creating parameters
    df.Parameters.AddWithValue("@ID", InstructorIDText.Text);

    df.Parameters.AddWithValue("@FirstName", FNText.Text);
    df.Parameters.AddWithValue("@LastName", Lntext.Text);
    df.Parameters.AddWithValue("@Street", StreetText.Text);
    df.Parameters.AddWithValue("@City", CityText.Text);
    df.Parameters.AddWithValue("@State", StateText.Text);
    df.Parameters.AddWithValue("@Zip", ZipText.Text);
    df.Parameters.AddWithValue("@Office", OfficeText.Text);
    df.Parameters.AddWithValue("@EMail", EmailText.Text);
    df.ExecuteNonQuery();
    db.Close();
}

2 个答案:

答案 0 :(得分:0)

在查询中使用@parameter而不是连接精确值

对于MS-SQL

//OPENING CONNECTION

db.Open();
int idd = int.Parse(InstructorIDText.Text);

OleDbCommand df = new OleDbCommand("UPDATE Instructors SET FirstName=@FirstName,LastName=@LastName,Street=@Street,City=@City,State=@State,Zip=@Zip,Office=@Office,EMail=@EMail WHERE ID = @ID", db);
//creating parameters
df.Parameters.AddWithValue("@ID", InstructorIDText.Text);

df.Parameters.AddWithValue("@FirstName", FNText.Text);
df.Parameters.AddWithValue("@LastName", Lntext.Text);
df.Parameters.AddWithValue("@Street", StreetText.Text);
df.Parameters.AddWithValue("@City", CityText.Text);
df.Parameters.AddWithValue("@State", StateText.Text);
df.Parameters.AddWithValue("@Zip", ZipText.Text);
df.Parameters.AddWithValue("@Office", OfficeText.Text);
df.Parameters.AddWithValue("@EMail", EmailText.Text);
df.ExecuteNonQuery();
db.Close();

答案 1 :(得分:-1)

使用add with value时,请使用变量idd而不是.Text属性。该查询期望您的@id参数为int,但您提供的是字符串。

看看是否有帮助