我有以下代码用于更新简单表单上的数据:
"b"
当我更换“i”时:
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>");
}
}
代码运行完美,但是当我使用变量时,它会抛出错误。
我尝试使用 cmd.Parameters.AddWithValue("@id", i );
和Sid.Text
代替“i”,但两者都无效。
请帮忙。
答案 0 :(得分:2)
你忘了包含你得到的错误....巨大的失礼。但这是对解决方案的猜测:
尝试指定id列的类型。这样的事情(确保你使用正确的SqlDbType):
cmd.Parameters.Add("@id", SqlDbType.Int);
cmd.Parameters["@id"].Value = i;