C# 无效的列名';店铺名称';错误
我有一个基于下拉列表中所做选择的下拉列表,我填充了一个复选框列表C# 无效的列名';店铺名称';错误,c#,asp.net,sql,C#,Asp.net,Sql,我有一个基于下拉列表中所做选择的下拉列表,我填充了一个复选框列表 protected void dropdown_SelectedIndexChanged(object sender, EventArgs e) { SqlConnection Mcon = new SqlConnection(MA); SqlCommand command = new SqlCommand("select distinct Shop_Name from pr
protected void dropdown_SelectedIndexChanged(object sender, EventArgs e)
{
SqlConnection Mcon = new SqlConnection(MA);
SqlCommand command = new SqlCommand("select distinct Shop_Name from prod.dbo.Dim_Shop f INNER JOIN Dim_Warehouse p on p.Warehouse_key = f.Warehouse_Key where p.Warehouse_DB_Name=" + this.dropdown.SelectedValue, Mcon);
SqlDataAdapter dataAadpter = new SqlDataAdapter(command);
DataSet ds = new DataSet();
dataAadpter.Fill(ds);
CheckBoxList1.DataSource = ds;
CheckBoxList1.DataTextField = "Shop_Name";
CheckBoxList1.DataBind();
}
当我运行此命令时,出现无效列名错误。有人能帮我吗?问题:您没有在
查询中正确地提供此下拉列表.SelectedValue
参数
解决方案:您需要将VARCHAR
类型正确地用单引号括起来
试试这个:
SqlCommand command = new SqlCommand("select distinct Shop_Name from prod.dbo.Dim_Shop f INNER JOIN Dim_Warehouse p on p.Warehouse_key = f.Warehouse_Key where p.Warehouse_DB_Name='" + this.dropdown.SelectedValue+"'", Mcon);
您的查询
容易受到sql注入攻击
,请使用参数化查询
避免它们
使用参数化查询:
SqlCommand command = new SqlCommand("select distinct Shop_Name from prod.dbo.Dim_Shop f INNER JOIN Dim_Warehouse p on p.Warehouse_key = f.Warehouse_Key where p.Warehouse_DB_Name=@name", Mcon);
command.Parameters.AddWithValue("@name",this.dropdown.SelectedValue);
我想最明显的问题是-在数据库的Dim_Shop表中有没有一个名为“Shop_Name”的列?@HitLikeAHammer:谢谢@苏达卡·蒂拉普迪回答说:)为什么你认为OP收到的错误可以通过你的修复来解决?苏达卡·蒂拉普迪:非常感谢。修正:)@Valley:不客气,如果对你有帮助的话,把它标记为答案。@Sudhakar Tillapudi:当然会。@KirkWoll:因为OP没有正确地封闭这个下拉列表。SelectedValue
参数在他的选择查询中。