Ola amigos, preciso criar uma string de consulta de maneira dinamica. Ou seja, tenho um algumas checkboxes com os tipos de materiais. Assim :
<input type="checkbox" name="Material" value="Acrilico"> Acrilico <br/>
<input type="checkbox" name="Material" value="Cristal"> Cristal <br/>
<input type="checkbox" name="Material" value="Transistions">Transistions <br/>
<input type="checkbox" name="Material" value="High Lite"> High Lite <br/>
<input type="checkbox" name="Material" value="Trivex"> Trivex <br/>
<input type="checkbox" name="Material" value="Policarbonato">Policarbonato <br/>
<input type="checkbox" name="Material" value="Stylis"> Stylis<br/>
Eu preciso da criar uma select assim :
Select * from Lentes where material="Acrilico" OR material="Cristal" OR material="Transistions" OR material="High Lite" OR material="Trivex" OR material="Policarbonato" OR material="Stylis"
Mas eu nao sei como fazer isso sem saber quais as checkboxes serao marcadas.
Primeiro, use StringBuffer ou StringBuilder (o modo é o mesmo, só muda o nome).
Segundo, algumas coisas vc já tem padrão, certo?
StringBuffer query = new StringBuffer();
//ou StringBuilder query = new StringBuilder();
query.append("SELECT coluna1, coluna2, colunaN FROM lentes WHERE");
Depois, para cada checkbox, você cria um if, se ele estiver marcado, você acrescenta igualdade
if(request.getParameter("Acrilico") != null){
query.append(" material = Acrilico ");
}
E assim por diante
Onde vc está obtendo os valores do request? Em um servlet?
Se sim, seria algo assim:
String[] materiais = request.getParameterValues( "Material" );
for ( String material : materiais ) {
// aqui, a variável material vai guardar o valor de todos os materiais selecionados
}
[]'s
Obrigado pelas respostas.
David, sim, eh num servlet
Não é não. StringBuffer é sincronizado, enquanto o StringBuilder não é.
Prefira sempre StringBuilder, só use o StringBuffer se precisar de sincronização.
Os checkboxes dele tem o mesmo nome, por consequência os valores vem no mesmo parâmetro do request.
Sendo assim, é só usar o método getParameterValues do request.
[]'s
Pessoal, agradeco muito a ajuda de voces. Vou tentar seguir a sugestao de voces agora. Seu eu tiver problemas vou amolar voces mais um pouquinho.
David, eu preciso pegar o nome do parametro ( o NAME ) e o valor ( o VALUE ) pra poder montar o filtro:
Select * from lente where NAME=VALUE.
Tem alguma sugestao ?
Da forma como vc sugeriu eu nao consigo pegar o NAME da checkbox. Eu queria uma forma de nao precisar encher o codigo de IF.