Equals não funciona ajuda

no código a seguir uso o equals la em baixo no else

try{
Class.forName("org.postgresql.Driver"); // carrega drive

Connection con= DriverManager.getConnection("jdbc:postgresql://localhost/jsp","postgres","1989"); 
//conectando no banco
	
Statement st=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); //usa conexão

ResultSet rs = null;

if(request.getParameter("acao")!= null)
{
st.executeUpdate("delete from login where codigo= "+ request.getParameter("codigo") );
}
if(request.getParameter("orde")!= null)
{
rs= st.executeQuery("select * from login ");
}
else if (request.getParameter("orde").equals("cres"))
{
rs = st.executeQuery("select * from login order by login");
}
//ResultSet rs= st.executeQuery("select * from login");
// executa comando 

o .equals do else não funciona tentei testar ele em outro lugar e não consegui
alguem sabe oque poderia ser e se tem algum erro no código aqui?

mal ja arrumei esqueci. eu so novo aqui

Agora me diga, como não funciona?
O que vem em

request.getParameter("orde") ?
Primeiro, debugue e veja se é realmente igual a

"cres"

Depois, por que não cria uma String para receber o valor do parâmetro orde?

Talvez esteja falando besteira, mas o retorno tanto request.getParameter() geralmente é um Object. Logo, dificilmente ele seria igual a uma String. Sugiro que faça como o rapaz acima disse e receba o valor numa variável e depois faça a comparação.

request.getParameter(str) retorna uma String (que é um objeto).

Da um System.out.println(request.getParameter(“orde”));

request.getParameter(str) retorna uma String (que é um objeto).

Da um System.out.println(request.getParameter(“orde”));[/quote]

Tem razão, o getAttribute() que retorna um objeto.

E só uma dica para você:

Ao usar o equals, sempre invoque o metodo equals da constante. Por exemplo, você colocou assim:

if (request.getParameter("orde").equals("cres")) 

Mude para:

if ("cres".equals(request.getParameter("orde")) 

Porque se por algum motivo request.getParameter(“orde”) vier null ele irá lançar um NullPointerException.

eu fiz oque você falou coloquei o if (“cres”.equals(request.getParameter(“orde”))
só que ai da erro no meu ResultSet que ja esta fora por sinal e no caso dele vir null ja esta tratado no if o caso é se ele não vier null
eu dei o out.printl nele a primeira vez veio null se eu acessar ele vem cres eu não sei qual o problema mais é na comparação creio eu

O retorno pode ser uma instância de Object, mas o equals vai comparar o hash do mesmo, caso você tenha

Object o = "ABC";
String s = "ABC";
System.out.println(o.equals(s));

Terá como saída true, pois o objeto o possui o mesmo hash que o objeto s.

[quote=locuradk]eu fiz oque você falou coloquei o if (“cres”.equals(request.getParameter(“orde”))
só que ai da erro no meu ResultSet que ja esta fora por sinal e no caso dele vir null ja esta tratado no if o caso é se ele não vier null
eu dei o out.printl nele a primeira vez veio null se eu acessar ele vem cres eu não sei qual o problema mais é na comparação creio eu
[/quote]

Coloque aqui o StackTrace.

Obs:

A minha dica foi só para evitar um possível NullPointerException. O que eu quis dizer é que você deveria SEMPRE usar o equals do objeto constante 8)

ae galera consegui !
eu não percebi que o else estava igual o if testando se é diferente de null oque no caso ia ser sempre diferente e nunca ia entrar no else
Obrigado a todos.
código arrumado

[code]
try{
Class.forName(“org.postgresql.Driver”); // carrega drive

Connection con= DriverManager.getConnection(“jdbc:postgresql://localhost/jsp”,“postgres”,“1989”); //conectando no banco

Statement st=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); //usa conexão

ResultSet rs = null;

out.println(orde);

if(request.getParameter(“acao”)!=(null))
{
st.executeUpdate("delete from login where codigo= "+ request.getParameter(“codigo”) );
}
if(request.getParameter(“orde”)==null )
{
rs= st.executeQuery(“select * from login “);
}
//out.println(””+request.getParameter(“orde”));
else
if (request.getParameter(“orde”).equals(“cres”))
{
rs = st.executeQuery(“select * from login order by login”);
}[/code]

[quote=locuradk]eu fiz oque você falou coloquei o if (“cres”.equals(request.getParameter(“orde”))
só que ai da erro no meu ResultSet que ja esta fora por sinal e no caso dele vir null ja esta tratado no if o caso é se ele não vier null
eu dei o out.printl nele a primeira vez veio null se eu acessar ele vem cres eu não sei qual o problema mais é na comparação creio eu
[/quote]
Sinceramente, o erro não deve ser da comparação.
Eu sugiro que você faça como indiquei, instancie uma variável temporária e obtenha o valor do parâmetro

String ordem = (String) request.getParameter("orde");

Altere a comparação para este cara

if("cres".equals(ordem)){
//faz algo
}

E, se preferir, faça um System.out.println(“cres”.equals(ordem)), caso tenha um true, o trecho dentro do else if deve ser executado, caso contrário, o valor que vem no request é:
null
Diferente de “cres” por possuir:

  • Algum caractere em maiúsculo - neste caso, um “cres”.equalsIgnoreCase(ordem) resolve.
  • Ter caracteres a mais/menos que “cres”
  • Não ser cres - ser “des” ou qualquer outra coisa

Amigo, posso estar errado, mas nesse trecho:

if(request.getParameter("orde")!= null) { rs= st.executeQuery("select * from login "); } else if (request.getParameter("orde").equals("cres")) { rs = st.executeQuery("select * from login order by login"); }

Como no primeiro if você verifica se request.getParameter(“orde”) é diferente de null, ele só entrará no else se for null, ou seja, nunca será igual a “cres”.

Você pode tentar primeiro verificar se é igual a “cres” e depois ver se é diferente de null:

if (request.getParameter("orde").equals("cres")) { rs = st.executeQuery("select * from login order by login"); } else if(request.getParameter("orde")!= null) { rs= st.executeQuery("select * from login "); }

sim isso mesmo eu tava testando ser diferente de null se sempre for diferente de null não ia entrar no else if

[quote=Sem_Nome][quote=locuradk]eu fiz oque você falou coloquei o if (“cres”.equals(request.getParameter(“orde”))
só que ai da erro no meu ResultSet que ja esta fora por sinal e no caso dele vir null ja esta tratado no if o caso é se ele não vier null
eu dei o out.printl nele a primeira vez veio null se eu acessar ele vem cres eu não sei qual o problema mais é na comparação creio eu
[/quote]

Coloque aqui o StackTrace.

Obs:

A minha dica foi só para evitar um possível NullPointerException. O que eu quis dizer é que você deveria SEMPRE usar o equals do objeto constante 8) [/quote]
E é isso mesmo.
Sempre que colocamos da forma como o autor do tópico está fazendo, corremos o risco de um NPE, afinal, o método equals, herdado da classe Object, é chamado.
O correto é fazer como você disse, verificar se algo que se conhece é igual a alguma coisa que vem do usuário, do banco, de outro sistema ou de outra parte do aplicativo. Se essa outra coisa vier nula, ainda será diferente do que nós temos e conhecemos.