Logica

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!