在Visual Studio 2008中使用设计器将逗号分隔列表作为参数传递给db2查询的IN子句

时间:2009-03-26 23:06:01

标签: sql vb.net data-access-layer

我想将一个逗号删除的值列表作为参数传递给我正在使用Visual Studio 2008中的设计器构建的查询,该查询基于我正在经历的一些强类型DAL教程。该查询针对DB2数据库。这就是我想要做的事情:

从(?)

中的客户价格中选择*

它运作良好我在123456传递了吗?

但是当我传入'123456'(这是一个char字段,所以我不知道为什么这不起作用;它必须在幕后添加这些)或123456,123457或'123456'时失败123457'

我正在将此页面添加到一个门户网站,其中所有数据访问都是基于DAL设计器模型完成的,其中BLL调用它,因此我希望以这种方式实现一致性。这是可能的还是这种情况下工具不够灵活,无法完成我需要它做的事情?感谢。

1 个答案:

答案 0 :(得分:1)

这是人们使用参数化查询犯下的一个非常常见的错误。您必须记住,单个参数占位符“?”可替代单个值

请参阅下面的问题链接,了解Joel Spolsky对此问题的巧妙解决方案。

Parameterizing a SQL IN clause?

另外一群人回答了同样的问题,重申标准解决方案是动态构建SQL查询,为每个需要传递的值附加一个参数占位符。