2016-03-16 20 views
0

我有一个简单的表格上的数据更新如下代码:动态更新SQL查询不变量工作

protected void BUpdate_Click(object sender, EventArgs e) 
{ 
    i = Convert.ToInt32(Sid.Text); 
    comm = "UPDATE tblStaff SET Name = @sname, Gender = @sex, Phone = @phone, Address = @address, Position = @position, Salary = @salary WHERE (ID = @id)"; 
    cmd = new SqlCommand(comm, cn); 

    cmd.Parameters.AddWithValue("@id", i); 
    cmd.Parameters.AddWithValue("@sname", Sname.Text); 
    cmd.Parameters.AddWithValue("@sex", DropDownList1.Text); 
    cmd.Parameters.AddWithValue("@position", Sposition.Text); 
    cmd.Parameters.AddWithValue("@salary", Ssalary.Text); 
    cmd.Parameters.AddWithValue("@address", Saddress.Text); 
    cmd.Parameters.AddWithValue("@phone", Sphone.Text); 

    r = cmd.ExecuteNonQuery(); 

    if (r > 0) 
    { 
     ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('Success')</script>"); 
    } 
    else 
    { 
     ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('Failed')</script>"); 
    } 
} 

当我代替“i”的:

cmd.Parameters.AddWithValue("@id", i); 

代码完美运行,但是当我使用变量时,它会引发错误。

我已经尝试使用Sid.TextConvert.toInt32(Sid.text)来代替“我”,但都没有工作。

请帮忙。

+0

你应该阅读这篇文章。 http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/ –

回答

2

你忘了包括你得到的错误....巨大的失礼。但这里有一个解决方案的猜测:

尝试指定ID列的类型。像这样的东西(确保你使用的是正确的SqlDbType):

cmd.Parameters.Add("@id", SqlDbType.Int); 
cmd.Parameters["@id"].Value = i; 
+0

非常感谢你。 –