如何在C#中使用CommandText中的参数进行过滤?

时间:2012-12-06 03:48:04

标签: c# sql

我想填充一个ComboBox,但我想通过一个名为“id_group”的参数对数据进行排序。 我写了一个代码,但它不起作用。 在这一行中发生了一个异常,说“语法不正确”:

SqlDataReader sd = sc.ExecuteReader();

这是我的全部代码:

int id_group=5;
SqlConnection conn = new SqlConnection();
SqlCommand sc = conn.CreateCommand();
sc.CommandText = "SELECT STUDENT FROM FACULTY WHERE ID_GROUP '" + id_group + "'";
conn.Open();
SqlDataReader sd = sc.ExecuteReader(); //this happens exception - "incorrect syntax"
while (sd.Read())
{
    string graduate = (string)sd["STUDENT"];
    Student_comboBox.Items.Add(graduate);
}
conn.Close();

如何让它发挥作用? 是否有其他方法可以通过参数过滤数据?

1 个答案:

答案 0 :(得分:4)

实际上你在查询中遗漏了=,所以这应该是这样的,

sc.CommandText = "SELECT STUDENT FROM FACULTY WHERE ID_GROUP = '" + 
                                                    id_group + "'";

但请进行参数化以避免SQL Injection

sc.CommandText = "SELECT STUDENT FROM FACULTY WHERE ID_GROUP = @groupID";
sc.Parameters.AddWithValue("@groupID", id_group);

SOURCE