我有一個過濾器對象來查詢表具有很多列,而非寫覆蓋所有列(允許可選的過濾)這樣的條件:如何動態查詢列名使用的是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