# Flexible Prepared Statements



## Gast (14. Sep 2004)

Hallo!

Gibt es eine Möglichkeit  einem PreparedStatement einen Wert zu übergeben, sodass die jeweilige Bedingung ignoriert wird (null funktioniert ja nicht). 

Bsp.: 

"SELECT * FROM person WHERE name LIKE ? AND surname LIKE ? AND day_of_birth = ?"

Der User wird mittels Dialog nach Nachname, Vorname und Geburtsdatum gefragt. Nun möchte ich dem User die Möglichkeit geben alle möglichen Kombinationen einzugeben (z.B. nur Vorname oder Vorname und Geburtsdatum, ...) ohne dass ich ein PreparedStatement für jede Kombination schreiben muss. 

Danke im Vorraus!


----------



## foobar (14. Sep 2004)

In diesem Fall macht ein PreparedStatement wenig Sinn. Am flexiblelsten ist es, wenn du jenachdem welche Felder ausgefüllt wurden, dein Statement zusammenbaust. Dann hast du immer nur die Felder im Frompart, auf die du prüfen willst.


----------



## Bleiglanz (14. Sep 2004)

mach eben dreimal LIKE und verwende für nicht eingetippte Bedingungen einfach %

funzt natürlich nicht beim Datum :-(

oder schreib WHERE (1=? AND X=? ) und setzt dann

ps.setInt(1,0); // zum ausblenden, setInt(1,1) zum Einblenden

und so weiter, also doppelte Zahl von Parametern


----------

