Pessoal,
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??
Ate mais…
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!!!
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");
boolean primeiro=true;
String teste="SELECT * FROM tabacesso";
if(nome.equals("")) // existe algum operador que faca a funcao notequals ???
{
}
else
{
teste+=" WHERE nome ='"+ nome +"'";
primeiro=false;
}
if(sobre.equals(""))
{
}
else if(primeiro)
{
teste+=" WHERE sobrenome ='"+sobre+"'";
primeiro=false;
}
else
{
teste+=" AND sobrenome ='"+sobre+"'";
out.print(teste);
}
if(emp.equals(""))
{
}
else if(primeiro)
{
teste+=" WHERE empresa ='"+emp+"'";
primeiro=false;
}
else
{
teste+="AND empresa ='"+emp+"'";
}
/////ai vai varia outras opcoes....
ResultSet rs = stmt.executeQuery(teste);
Ate mais…
[color=“red”]Editado por jeveaux para adcionar o BBCode CODE [/color]
olá,
exatamente assim… eh isso ai.
e quanto ao notEquals vc pode fazer assim
if(!string.equals(“lalala”)) //colque um ! que representa negação
valew ai!