使用AND,OR在C#中选择Query

时间:2014-05-11 10:03:44

标签: c# sql

我有一个winform C#SQL应用程序,我尝试使用以下查询从表中获取数据

fth.CommandText = "
Select Enrollment_No, Student_Name 
from Final_Result_Master 
where Sub_1=@Sub 
    and Sub_1_stat=@sta Or Sub_2=@Sub 
    and Sub_2_stat=@sta Or Sub_3=@Sub 
    and Sub_3_stat=@sta Or Sub_4=@Sub 
    and Sub_4_stat=@sta Or Sub_5=@Sub 
    and Sub_5_stat=@sta Or Sub_6=@Sub 
    and Sub_6_stat=@sta Or Sub_7=@Sub 
    and Sub_7_stat=@sta Or Sub_8=@Sub 
    and Sub_8_stat=@sta Or Sub_9=@Sub 
    and Sub_9_stat=@sta Or Sub_10=@Sub 
    and Sub_10_stat=@sta Or Sub_11=@Sub 
    and Sub_11_stat=@sta Or Sub_12=@Sub 
    and Sub_12_stat=@sta";

在病房之后我将其显示在数据网格视图中。

但问题是数据网格视图只有列名,即Enrollment_No和Student_Name,并且没有其他数据与网格 参考图片 no rows

我尝试在SSMS中执行相同的查询,它给了我输出,例如4个注册号和4个名称。

但是c#commandtext没有返回任何行... 可能是什么问题???

1 个答案:

答案 0 :(得分:2)

AND子句中合并ORWHERE时,您需要正确使用括号:

试试这个:

fth.CommandText = "Select Enrollment_No, Student_Name 
       from Final_Result_Master 
       where (Sub_1=@Sub and Sub_1_stat=@sta) 
       or (Sub_2=@Sub and Sub_2_stat=@sta)   
       Or (Sub_3=@Sub and Sub_3_stat=@sta) 
       Or (Sub_4=@Sub and Sub_4_stat=@sta) 
       Or (Sub_5=@Sub and Sub_5_stat=@sta) 
       Or (Sub_6=@Sub and Sub_6_stat=@sta) 
       Or (Sub_7=@Sub and Sub_7_stat=@sta) 
       Or (Sub_8=@Sub and Sub_8_stat=@sta) 
       Or (Sub_9=@Sub and Sub_9_stat=@sta) 
       Or (Sub_10=@Sub and Sub_10_stat=@sta)
       Or (Sub_11=@Sub and Sub_11_stat=@sta) 
       Or (Sub_12=@Sub and Sub_12_stat=@sta)";

在组合ANDOR条件时,使用括号非常重要,以便数据库知道评估每个条件的顺序。 (就像你在学习Math课程中的操作顺序一样!)。

一些例子here