Essa acredito que seja mais um problema de logica, tenho uma pagina que os usuarios fazem consultas em um bd, e podem consultar por varios parametros como nome, sobrenome, empresa, data de acesso entre outros. A questao eu estou fazendo com ifs mais vao ficar muitos ou seja se o usuario quer so por nome ou so por sobrenome ou por nome e sobrenome ou so por empresa e ai vai…
Alguem teria uma ideia de como otimizar essa consulta ou seja identificar o que o usuario quer sem ter que fazer tantos ifs??
Tem algumas formas de fazer isso, cada campo marcado represnta um string que vão se juntado e formando a sintax SQL…Vc pode colocar em varáveis tabém ex:
String g=request.getParameter("Campo selecionado");
String sql="Select * from tabela where nome="+g;
o que for escolhido será g, vc pode fazer varáveis para toda parte da sintaxe
ou vc pode fazer
String query="";
switch(request.getParameter()){
case 1: query="Select * from tab where id=2"; break;
case 2: query="Select * from tab where id=10";break
}
e por ai vai!!!
M
marceloedreiPJ
Cara, valeu a dica eu to postando pra quem precisa e se alguem puder melhorar:
nome=request.getParameter("user");sobre=request.getParameter("sobre");diaini=request.getParameter("diaini");mini=request.getParameter("mesinicial");anin=request.getParameter("anoinicial");dfim=request.getParameter("diafinal");mfim=request.getParameter("mesfinal");afim=request.getParameter("anofinal");emp=request.getParameter("emp");booleanprimeiro=true;Stringteste="SELECT * FROM tabacesso";if(nome.equals("")) // existe algum operador que faca a funcao notequals ???{}else{teste+=" WHERE nome ='"+nome+"'";primeiro=false;}if(sobre.equals("")){}elseif(primeiro){teste+=" WHERE sobrenome ='"+sobre+"'";primeiro=false;}else{teste+=" AND sobrenome ='"+sobre+"'";out.print(teste);}if(emp.equals("")){}elseif(primeiro){teste+=" WHERE empresa ='"+emp+"'";primeiro=false;}else{teste+="AND empresa ='"+emp+"'";}/////aivaivariaoutrasopcoes....ResultSetrs=stmt.executeQuery(teste);
Ate mais…
[color=“red”]Editado por jeveaux para adcionar o BBCode CODE [/color]
J
Juliano_CarnielPJ
olá,
exatamente assim… eh isso ai.
e quanto ao notEquals vc pode fazer assim
if(!string.equals(“lalala”)) //colque um ! que representa negação