无效的列名称'Pediatri'

时间:2016-01-26 18:58:17

标签: c# sql asp.net

为什么会这样?我桌上的这个专栏名称还可以,请问我一个想法吗?

SqlCommand cmd = new SqlCommand ("select Emri from Drsignup WHERE Departamenti=" + DropDownList3.SelectedItem.Value + " ", cn);
            SqlDataAdapter dt = new SqlDataAdapter(cmd);
            DataSet det = new DataSet();
            dt.Fill(det);
            DropDownList4.DataSource = det;
            DropDownList4.DataTextField = "Emri";
            DropDownList4.DataBind();

1 个答案:

答案 0 :(得分:3)

您在SQL查询中使用字符串值而不将其括在引号中:

select Emri from Drsignup WHERE Departamenti=Pediatri

因此,SQL引擎认为Pediatri是指数据库对象(在本例中是一列)。

可以用引号包装它,但这只能暂时解决问题的这一个症状。问题本身就是您将查询的输入连接为代码而不是将其视为值。而是使用值的参数:

SqlCommand cmd = new SqlCommand ("select Emri from Drsignup WHERE Departamenti = @Departamenti", cn);
cmd.Parameters.AddWithValue("@Departamenti", DropDownList3.SelectedItem.Value);