Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Kingmotta

JDBC PreparedStatement Select erro

Recommended Posts

Pessoal, to aprendendo java web agora, e fiz o seguinte código:

 public boolean logarUsuario(Usuario usuario) throws Exception {
        PreparedStatement ps = null;

        try {
            String SQL = "SELECT id FROM usuario WHERE nome =? and senha =?";
            ps = this.conn.prepareStatement(SQL);
            ps.setString(1, usuario.getLogin());
            ps.setString(2, usuario.getPassword());
            ps.executeQuery(SQL);

            ResultSet rs = ps.getResultSet();
            boolean usuarioLogado = Boolean.valueOf(SQL);
            return usuarioLogado;
        } catch (SQLException sqle) {
            throw new Exception("Erro ao gravar dados: " + sqle);
        } finally {
            if (ps != null) {
                ps.close();
            }
            ConnectionFactory.closeConnection(this.conn);
        }

    }

Esse está dando o seguinte erro:

java.lang.Exception: Erro ao gravar dados: 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 '?' at line 1

 

Mas o insert está funcionando perfeitamente, e também tem os '?' nele.

E o meu outro select sem where funciona tbm.

 

Procurei na net mas não achei algo que ajudasse.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estão chegando..

Para testar alterei essa parte do código:

 String sWhere = "nome= " + usuario.getLogin() + " and senha = " + usuario.getPassword();
        try {
            String SQL = "SELECT id FROM usuario WHERE " + sWhere;
            ps = this.conn.prepareStatement(SQL);
            //  ps.setString(1, usuario.getLogin() + " and senha = " + usuario.getPassword());
            //ps.setString(2, usuario.getPassword());
            ps.executeQuery(SQL);
            ResultSet rs = ps.getResultSet();

            return rs;

        } catch (SQLException sqle) {

e o erro mudou para: java.lang.Exception: Erro ao procurar dados: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'lucas' in 'where clause'

 

Mas o lucas é o getLogin, e meio que ele ta invertendo e colocando lucas como coluna na hora do execute...

Pois fiz o teste também enviando uma string do meu select montado, e ficou perfeito..

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Faz este teste com esta query.

String sWhere = "nome= '" + usuario.getLogin() + "' and senha = '" + usuario.getPassword() + "'";

Funcionou, só não entendo o porque do "?" não funcionar, mas de qualquer forma esta gambiarra funcionou ahha.

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.