no código a seguir uso o equals la em baixo no else
try{Class.forName("org.postgresql.Driver");// carrega driveConnectioncon=DriverManager.getConnection("jdbc:postgresql://localhost/jsp","postgres","1989");//conectando no bancoStatementst=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);//usa conexãoResultSetrs=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 ");}elseif(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?
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?
H
hyogawar
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.
S
Sem_Nome
request.getParameter(str) retorna uma String (que é um objeto).
Da um System.out.println(request.getParameter(“orde”));
H
hyogawar
request.getParameter(str) retorna uma String (que é um objeto).
Da um System.out.println(request.getParameter(“orde”));
Tem razão, o getAttribute() que retorna um objeto.
S
Sem_Nome
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.
L
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
drsmachado
O retorno pode ser uma instância de Object, mas o equals vai comparar o hash do mesmo, caso você tenha
Terá como saída true, pois o objeto o possui o mesmo hash que o objeto s.
S
Sem_Nome
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
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)
L
locuradk
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
try{Class.forName("org.postgresql.Driver");// carrega driveConnectioncon=DriverManager.getConnection("jdbc:postgresql://localhost/jsp","postgres","1989");//conectando no bancoStatementst=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);//usa conexãoResultSetrs=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"));elseif(request.getParameter("orde").equals("cres")){rs=st.executeQuery("select * from login order by login");}
drsmachado
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
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
Stringordem=(String)request.getParameter("orde");
Altere a comparação para este cara
if("cres".equals(ordem)){
//fazalgo
}
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
cogumello
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 ");
}
L
locuradk
sim isso mesmo eu tava testando ser diferente de null se sempre for diferente de null não ia entrar no else if
drsmachado
Sem_Nome:
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
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)
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.