Erro sql [resolvido]

14 respostas
tunpaio

Oi pessoal, estou com um outro problema, meu código ta funcionando, de login e senha, mas da um erro e no navegador mostra que não achou usuario e senha, mas digitei corretamente os dois.

Segue código da classe:

public boolean login(String nome, String fone)
	{
		try {
			ps = con.prepareStatement("SELECT nome, fone FROM agenda WHERE  nome = ?, " + " fone = ? ");
			ps.setString(1, nome);
			ps.setString(2, fone);
			rs = ps.executeQuery();
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		return false;
	}

Segue o código da jsp que verifica:

<jsp:useBean id="conexao" scope="page" class="database.ConexaoBd" />
<jsp:useBean id="agenda" scope="page" class="database.Agenda" />

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Verificando usuario</title>
</head>
<body>

<%
String nome = request.getParameter("username");
String fone = request.getParameter("password");

conexao.conectar();
agenda.setConexao(conexao.getConexao());

if (agenda.login(nome, fone))
	out.println("<h2>Voce esta cadastrado</h2>");
else
	out.println("<h2>Quem sois vos!</h2>");
	conexao.fechar();
%>

</body>
</html>

Se alguém entender o que pode ser, agradeço, segue abaixo o que o console passou de erro:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' fone = '[telefone removido]'' at line 1

Obrigado novamente pela ajuda.

14 Respostas

Vanilson

Monte a sua query sql da sequinte forma: SELECT nome, fone FROM agenda WHERE nome = ? and fone = ? "

tunpaio

Oi Vanilson, tudo bem?

Já havia tentado isso antes, tentei novamente e não mudou em nada.

Não consigo entender porque ele não reconhece o usuario e a senha, estão ambos em string, deve ser alguma coisa bem simples, mas que está passando despercebido.

Valeu a ajuda, se tiver alguma outra idéia agradeço!

JonaTHANNM

amigo, tenta executar como o colega citou e poste o erro novamente…
obrigado

tunpaio

então, eu fiz como ele indicou, agora não da nenhum erro no console, mas não acha o usuario também, estranho né, o código me parece estar correto.

Alguém mais pode ajudar?

JonaTHANNM

mas existe algum usuário de acordo com os parametros passado para a pesquisa ?

tunpaio

Sim existe, o que pude ver agora, é que ta falhando o return false, nele quando coloco true, da mensagem de cadastrado com sucesso, quando false, da mensagem de quem sois vos.

Como montei esse código olhando outros, acho que esse return true deve ficar dentro de quando a sql der certo e false quando der errado, mas não sei fazer isso, será isso mesmo?

Algum palpite amigo ai?

Obrigado…

JonaTHANNM
public boolean login(String nome, String fone)  
    {  
        try {  
            ps = con.prepareStatement("SELECT nome, fone FROM agenda WHERE  nome = ?, " + " fone = ? ");  
            ps.setString(1, nome);  
            ps.setString(2, fone);  
            rs = ps.executeQuery();  
            return true;
        }      
        catch (Exception e)  
        {  
            e.printStackTrace();  
            return false;
        }  
    }
tunpaio

Oi Jonathannm, blz?

Fiz como você colocou:

public boolean login(String nome, String fone) { try { ps = con.prepareStatement(" SELECT nome, fone FROM agenda WHERE nome = ? and fone = ? "); ps.setString(1, nome); ps.setString(2, fone); rs = ps.executeQuery(); return true; } catch (Exception e) { e.printStackTrace(); return false; } }

mas não deu certo, agora tudo que clico da cadastrado com sucesso.

JonaTHANNM

mas ele não inclui nada la no banco de dados?

tunpaio

não, esse sql é pra verificar se o nome e senha estão corretos, e dizer usuario cadastrado se ja tiver o nome de usuario no banco ou quem sois vos se não tiver ele no banco de dados

tunpaio

Não teria como colocar no código algo assim, contar linhas que achou nome e login, se for maior que 0 então return true, se não return false?

Não sei como fazer isso, estou pesquisando na internet mas ainda não achei, se alguém puder dar uma idéia, eu agradeço.

JonaTHANNM
public boolean login(String nome, String fone)  
    {  
        try {  
            ps = con.prepareStatement(" SELECT nome, fone FROM agenda WHERE nome = ? and fone = ? ");  
            ps.setString(1, nome);  
            ps.setString(2, fone);  
            rs = ps.executeQuery();  
            while(rs.next){
                    return true;
            } 
        }  
        catch (Exception e)  
        {  
            e.printStackTrace();  
            return false;  
        }  
    }

mais ou menos isso, vc tem que tentar adpatar para o que vc esta fazendo

tunpaio

Não deu certo também, estava tentando montar assim:

public boolean login(String nome, String fone) { try { ps = con.prepareStatement(" SELECT nome, fone FROM agenda WHERE nome = ? and fone = ? "); ps.setString(1, nome); ps.setString(2, fone); rs = ps.executeQuery(); if (rs > 0){ return true; } else { return false; } } catch (Exception e) { e.printStackTrace(); return false; } }

Mas está com aquele xis na linha rs > 0.

Ta difícil aqui…

tunpaio

Enfim consegui, olha só como ficou, pra quem passar e tiver a mesma dúvida:

public boolean login(String nome, String fone) { try { ps = con.prepareStatement(" SELECT nome, fone FROM agenda WHERE nome = ? and fone = ? "); ps.setString(1, nome); ps.setString(2, fone); rs = ps.executeQuery(); if (rs.next()){ return true; } } catch (Exception e) { e.printStackTrace(); } return false; }

Mais especificamente:

if (rs.next()){ return true; }

Agora deu certo, obrigado pela ajuda…

Criado 10 de junho de 2011
Ultima resposta 10 de jun. de 2011
Respostas 14
Participantes 3