使用Repeater Command Argument更新数据库时出现无效的列名userId错误

时间:2015-03-01 16:13:21

标签: c# asp.net sql-server-2012

这是Asp.net按钮代码

<asp:Button ID="Button2" runat="server" Text="Approved Job Request" CssClass="css_button" CommandName="ApplyButton" CommandArgument='<%#Eval("AId")%>' />

这是C#代码

 if (e.CommandName == "ApplyButton")
    {
        int userId = int.Parse(e.CommandArgument.ToString());

        SqlConnection con = new SqlConnection("Data Source=Mrunal;Initial Catalog=JobPortalDB;Integrated Security=True");

        String sql = "update AppliedJob set AApprove='yes' where AId=userId";
        SqlCommand cmd = new SqlCommand(sql,con);
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
        Response.Redirect("~/ReqHome.aspx");
    }

使用上面的代码,将错误视为

  

System.Data.SqlClient.SqlException:无效的列名'userId'

。 怎么办?

1 个答案:

答案 0 :(得分:1)

因为更新子句中的条件不正确

你可以这样做:

 String sql = "update AppliedJob set AApprove='yes' where AId='"+userId+"'";

但是以上不是SQL注入的强大功能,我几乎不建议使用SQL参数 试试这个:

 int userId = int.Parse(e.CommandArgument.ToString());
 String sql = "update AppliedJob set AApprove='yes' where AId=@userId";
 SqlCommand cmd = new SqlCommand(sql,con);
 cmd.Parameters.AddWithValue("@userId", userId);