Preparedstatment + filtros

pessoal nunca usei o preparedstatment antes… e estou com uma duvida… como faço pra fazer filtros dinamicos?

tipo

select * from tabela where filtro = ? and filtro2 = ? and filtro3= ?

prepareStatement.setString(1,"a")
prepareStatement.setString(2,"b")
prepareStatement.setString(3,"c")

onde pode não vir o filtro1/filtro2/filtro3

dai vem a duvida… porque posso fazer os teste lá na query porém quando seto eles (setString(x,X)) vai fica mudando de acordo com os filtros.

Não consegui entender muito bem sua dúvida. Você quer saber como criar filtros com vários parâmetros, mesmo que algum deles não seja aplicado? Algo como:

+----------+----------+
|   cod    |    nome  |
+----------+----------+
|    1     |     a    |
+----------+----------|
|    2     |     a    |
+----------+----------|
|    3     |     b    |
+----------+----------|
|    4     |     b    |
+----------+----------|

Aí se o filtro ‘nome’ estiver setado como “a” e o ‘cod’ não estiver, retornaria os dois primeiros resultados? Mas se o ‘cod’ estivesse setado como “1” retornaria somente o primeiro? É isso?

// não sei se deixei mais claro ou baguncei tudo de vez...  :)