Dúvida no JSP

9 respostas
D

Galera não estou acostumado com JSP e tem certas coisas que faço em outras linguagens que funcionam perfeitamente nelas porém no JSP sei lá pq não rola, alguém poderia me explicar o que tem de errado no código abaixo? Pq o resultado está dando false sendo que eu debuguei e os valores estão vindo corretos?

Outra coisa, o select poderia não retornar nada no caso de dados inexistentes, como eu poderia tratar isso sendo que não entraria no laço While?

Grato,

Daniel

<%

Connection con = ConnectionFactory.getConnection();
                
                String user = request.getParameter("txtUser");
                String pass = request.getParameter("txtSenha");
                
                PreparedStatement stmt = con.prepareStatement("select LOGIN, SENHA from TB_CLIENTE where LOGIN = ? ");
                ResultSet rs = null;
                
                stmt.setString(1, user);
                
                try
                {
                    rs = stmt.executeQuery();
                }
                catch (Exception ex)
                {
                    ex.printStackTrace();
                }

                
                while (rs.next())
                {
                    
                    if ((rs.getString(1) == user) && (rs.getString(2) == pass ))
                    {
                        out.println("true");                    }
                    else
                    {
                        out.println("false");                    }
                    
                }

%>

9 Respostas

D

Outra coisa, já passei os valores hard coded ali no If e dá na mesma.

Foxlol
Daniel_MV:
Galera não estou acostumado com JSP e tem certas coisas que faço em outras linguagens que funcionam perfeitamente nelas porém no JSP sei lá pq não rola, alguém poderia me explicar o que tem de errado no código abaixo? Pq o resultado está dando false sendo que eu debuguei e os valores estão vindo corretos?

Outra coisa, o select poderia não retornar nada no caso de dados inexistentes, como eu poderia tratar isso sendo que não entraria no laço While?

Grato,

Daniel

<%

Connection con = ConnectionFactory.getConnection();
                
                String user = request.getParameter("txtUser");
                String pass = request.getParameter("txtSenha");
                
                PreparedStatement stmt = con.prepareStatement("select LOGIN, SENHA from TB_CLIENTE where LOGIN = ? ");
                ResultSet rs = null;
                
                stmt.setString(1, user);
                
                try
                {
                    rs = stmt.executeQuery();
                }
                catch (Exception ex)
                {
                    ex.printStackTrace();
                }

                
                while (rs.next())
                {
                    
                    if ((rs.getString(1) == user) && (rs.getString(2) == pass ))
                    {
                        out.println("true");                    }
                    else
                    {
                        out.println("false");                    }
                    
                }

%>
if ((rs.getString(1).equals(user)) && (rs.getString(2).equals(pass)))
rmala_ti
if ((rs.getString(1) == user) && (rs.getString(2) == pass ))
if ((rs.getString(1).equals(user)) && (rs.getString(2).equals(pass)))

Foxlol,
poderia explicar o motivo desse mudança?
Olhando rapidamente, me parece a mesma coisa.

Abraço.

wbdsjunior

Daniel_MV:
if ((rs.getString(1).equals(user)) && (rs.getString(2).equals(pass)))

e para testar o resultSet:

if (rs != null) { while (rs.next()) { ... } }

marcio.rga

Lembre-se, sempre que for comparar igualdade de objetos (não-primitivos) utilize o método equals.
Em Java uma String sempre é um objeto :wink:

Abraços!

Foxlol

rmalati:
if ((rs.getString(1) == user) && (rs.getString(2) == pass ))

if ((rs.getString(1).equals(user)) && (rs.getString(2).equals(pass)))

Foxlol,
poderia explicar o motivo desse mudança?
Olhando rapidamente, me parece a mesma coisa.

Abraço.

Faço do marcio.rga as minhas palavras.

[]'s

D

Galera, esqueci de mencionar que essa abordagem do equals eu já havia utilizado, para falar a verdade foi a primeira que usei…

E deu na mesma…

[]'s

rmala_ti

Hum… agora lembrei…

Quando utilizo (==) ele compara se as variáveis estão referenciam o mesmo objeto.
Quando uso .equals ele compara se o conteúdo dos objetos são iguais.

É isso mesmo?

Abraços.

marcio.rga

rmalati:
Hum… agora lembrei…

Quando utilizo (==) ele compara se as variáveis estão referenciam o mesmo objeto.

Referenciam o mesmo objeto não é um bom termo já que em tese operador “==” é utilizado para comparar primitivos.

Grande abraço!

Criado 6 de novembro de 2008
Ultima resposta 6 de nov. de 2008
Respostas 9
Participantes 5