C# 选择包含多个“参数”的语句;及;

C# 选择包含多个“参数”的语句;及;,c#,ms-access,C#,Ms Access,我试图根据下面显示的sql查询从access中的表中提取数据。我在“订单”(1,2,3,4,5等)下继续得到一个错误,因为一个位置有多个“系统”,每个系统都有自己的订单。这就是为什么我首先选择系统,然后根据选择的系统获取订单,但是我无法找出错误 str = "Select last, first, comments From list Where ((Systems='" + comboBox12.Text +"')And (loc='" + locno + "')And (Order='"

我试图根据下面显示的sql查询从access中的表中提取数据。我在“订单”(1,2,3,4,5等)下继续得到一个错误,因为一个位置有多个“系统”,每个系统都有自己的订单。这就是为什么我首先选择系统,然后根据选择的系统获取订单,但是我无法找出错误

 str = "Select last, first, comments From list Where ((Systems='" + comboBox12.Text +"')And (loc='" + locno + "')And (Order='" + Num1 + "'))";
Num1=双数据类型,并与访问时的类型匹配。如有任何建议,我们将不胜感激


更多背景,Loc有多个系统,每个系统都有分配给每个系统的名字/姓氏,名字/姓氏的顺序为1到10。因此,1-10可以对同一Loc重复多次,因为存在多个系统。我不确定代码在被顺序弄糊涂了。

除了您应该防止SQL注入之外,您的语句的问题是
顺序属性。你把SQL弄糊涂了,因为它认为你的意思是
orderby

只需将其包含在
[]
中,即可纠正此问题:

str = "Select last, first, comments From list Where ((Systems='" + comboBox12.Text +"')And (loc='" + locno + "')And ([Order]='" + Num1 + "'))";


你应该考虑不要使用保留词来代替列名,例如<代码>最后< /COD>,<代码>第一次/代码>,<代码>命令> />代码> <代码>系统< /代码> .< /P>侧注释:由于SQL注入可能,你不应该连接你的语句。改用参数化查询。关于您的问题:您的问题是否不太清楚,但如果

顺序的类型是数字-您不应该将
Num1
括在单引号中。如果您提到错误,请发布详细的确切异常…或至少是异常消息。我也同意@AndyKorneyev,我们无法真正解决您代码中的问题,如果您只是发布将SQL字符串分配给某个变量的代码,那么这一位可能会起作用。请尝试存储过程我的朋友正如其他人所说,有几件事情需要纠正,但您没有提供足够的详细信息。也就是说,我感觉您正在尝试使用多个值作为“顺序”标准。在这种情况下,需要使用In子句,而不是equal运算符。(1,2,3,4)中的[Order]而不是Order='1,2,3,4'。让我们不要忘记保留的单词。@Fionnuala是的,他有很多(他发布的代码中有4个!)。添加了免责声明:)