2016-03-16 55 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

非常感謝你。 –