我正在ASP.NET 2.0中构建一个网站,我正在处理的页面的一些描述:ListView显示一个来自我的访问数据库的表(帖子)和一个带有多个选择用于过滤行的模式(通过论坛名称,值= forumId)。 我将列表框选定值转换为列表,然后运行以下查询。使用IN运算符与存储过程参数
参数:
OleDbParameter("@Q",list.ToString());
步骤:
SELECT * FROM sp_feedbacks WHERE forumId IN ([@Q])
问题是,好了,这是行不通的。即使当我从字符串1,4,“1”,“4”或“1,4”的MSACCESS 2007中运行时,我也会得到零结果。只有一个论坛被选中时,查询才有效。 (例如(1))。
- 解决方案? 所以我想我可以在很多OR中使用WHERE,但我真的很想避免这个选项。 另一种解决方案是将DataTable转换为列表,然后使用LINQ进行过滤,这看起来非常麻烦。
在此先感谢, BBLN。
岂不“1”和“4”是**两个**单独的参数? – Brian
@Brian我不知道,有没有办法将一个数组作为参数传递? – BBLN
不,'forumId IN(@Q)'被视为'forumID IN('1,2,3,4,5')'。您应该为每个需要的值创建单独的参数。 – Steve