【发布时间】:2013-05-17 17:34:49
【问题描述】:
我正在用 ASP.NET 2.0 构建一个网站,我正在处理的页面的一些描述: ListView 显示来自我的访问数据库的(帖子)表,以及用于过滤行的具有多选模式的 ListBox(按论坛名称,value=forumId)。 我将 ListBox 选择的值转换为 List,然后运行以下查询。
参数:
OleDbParameter("@Q",list.ToString());
程序:
SELECT * FROM sp_feedbacks WHERE forumId IN ([@Q])
问题是,好吧,它不起作用。即使当我从 MSACCESS 2007 使用字符串 1,4、“1”、“4”或“1,4”运行它时,我得到的结果为零。仅选择一个论坛时,查询有效。 (例如在(1)中)。
- 解决方案? 所以我想我可以将 WHERE 与许多 OR 一起使用,但我真的很想避免这个选项。 另一种解决方案是将 DataTable 转换为列表,然后使用 LINQ 对其进行过滤,这看起来很混乱。
提前致谢, BBLN。
【问题讨论】:
-
“1”和“4”不是两个单独的参数吗?
-
@Brian 我不知道,有没有办法将数组作为参数传递?
-
不,
forumId IN(@Q)被视为forumID IN ('1,2,3,4,5')。您应该为所需的每个值创建单独的参数。