Wie die Abfrage den Spaltennamen dynamisch, mit Postgres/NpgSQL

Ich habe ein filter-Objekt, um Abfragen einer Tabelle mit vielen Spalten, und anstatt zu schreiben, eine Bedingung, die alle Spalten (so dass für die optionale Filterung) wie folgt:

WHERE ((:value0 IS NULL) OR (column_name0 = :value0)) AND ((:value1 IS NULL) OR (column_name1 = :value1)) AND... etc

für jede Spalte. Stattdessen würde ich im Idealfall würde ich mag in der Lage sein, um übergeben Sie den Namen des Feldes als parameter:

WHERE :column_name0 = :value0 AND column_name1 = :value1 AND... etc

ist nicht möglich, da die Spalten sind erforderlich zur Analysezeit (ähnlich wie diese Antwort die hier gegeben werden).

Wie überwinden Sie diese? - Ich weiß nicht wirklich wollen, um die Pflege der SQL wenn neue Spalten Hinzugefügt oder entfernt (wie in meinem ersten Beispiel) und ich denke, es wäre gefährlich für mich zu konstruieren, die den Spaltennamen in der Kommando-string direkt, da dies vielleicht ermöglichen sql-injection.

Beachten Sie, dass dieser code ist hinter einem web service.

  • Warum tun Sie oft brauchen, um Spalten hinzufügen oder entfernen? Welchen guten Grund gibt es für eine solche Notwendigkeit?
  • Ich brauche das nicht zu tun dies oft. Ich wollte nur nicht zur Verwaltung der sql in meine filter-Objekt für jede änderung in meiner Datenbank und zur gleichen Zeit bieten ein flexibles Objekt, das zum filtern von Daten.
InformationsquelleAutor Mr Shoubs | 2011-04-07
Schreibe einen Kommentar