asp.net中的动态更新SQL查询不使用变量

时间:2016-03-16 18:30:44

标签: asp.net sql-server web

我有以下代码用于更新简单表单上的数据:

"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”,但两者都无效。

请帮忙。

1 个答案:

答案 0 :(得分:2)

你忘了包含你得到的错误....巨大的失礼。但这是对解决方案的猜测:

尝试指定id列的类型。这样的事情(确保你使用正确的SqlDbType):

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