我有一个过滤器对象来查询表具有很多列,而非写覆盖所有列(允许可选的过滤)这样的条件:如何动态查询列名使用的是Postgres/Npgsql的
WHERE ((:value0 IS NULL) OR (column_name0 = :value0)) AND ((:value1 IS NULL) OR (column_name1 = :value1)) AND... etc
每列为
。相反,我想最好我想能够在字段名作为参数传递:
WHERE :column_name0 = :value0 AND column_name1 = :value1 AND... etc
为列在分析时需要这是不可能的(类似于此答案given here) 。
你如何克服这一点? - 当新列被添加或删除时(我必须在第一个示例中),我并不想维护SQL,我认为将列名构造到命令字符串中会很危险直接,因为这可能会允许SQL注入。
请注意,此代码位于Web服务的后面。
为什么你经常需要添加或删除列?这样的需求有什么好的理由? – 2011-04-07 17:02:55
@ypercube,我不需要经常这样做。我只是不想为我的数据库中的每个更改维护过滤器对象中的sql,同时提供用于过滤数据的灵活对象。 – 2011-04-07 17:08:21