我有一个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,并且没有其他数据与网格 参考图片
我尝试在SSMS中执行相同的查询,它给了我输出,例如4个注册号和4个名称。
但是c#commandtext没有返回任何行... 可能是什么问题???
答案 0 :(得分:2)
在AND
子句中合并OR
和WHERE
时,您需要正确使用括号:
试试这个:
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)";
在组合AND
和OR
条件时,使用括号非常重要,以便数据库知道评估每个条件的顺序。 (就像你在学习Math课程中的操作顺序一样!)。
一些例子here。