1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Erro de sintaxe no Java, mas funciona no MySQL

Na hora de fazer a consulta, aparece uma mensagem de erro de sintaxe na linha " where Pessoa.nome like %?%", mas o código mesmo código funciona perfeitamente quando eu escrevo no MySQL. Porque o mesmo código que eu uso no MySQL dá erro de sintaxe no Java, existe alguma forma diferente de escrever o like no Java?

Código:

public Object listarPorId() throws SQLException, Exception {

        List<Object> listaFuncionario = new ArrayList();

        Consulta consulta = new Consulta();

        inicializarAtributos();

        stat = con.prepareStatement("select * from Usuario"
                                    + " inner join Pessoa on Pessoa.usuario = Usuario.id"
                                    + " left join Telefone on Telefone.pessoa = Pessoa.id"
                                    + " left join Celular on Celular.pessoa = Pessoa.id"
                                    + " inner join Pessoa_Fisica on Pessoa_Fisica.pessoa = Pessoa.id"
                                    + " inner join Endereco on Endereco.pessoa = Pessoa.id"
                                    + " where Pessoa.nome like %?%"
                                    + " order by Pessoa.nome");

        stat.setString(1, consulta.getPalavraLimite());

        rs = stat.executeQuery();

        while(rs.next()) {

            Funcionario funcionario = new Funcionario();
            funcionario.setId(rs.getInt("id"));
            funcionario.setEmail(rs.getString("login"));
            funcionario.setSenha(rs.getString("senha"));

            funcionario.setNome(rs.getString("nome"));
            funcionario.setSexo(rs.getString("sexo"));
            funcionario.setCep(rs.getString("cep"));
            funcionario.setNumero(rs.getString("numero"));
            funcionario.setComplemento(rs.getString("complemento"));

            funcionario.setTelefone(rs.getString("telefone"));
            funcionario.setCelular(rs.getString("celular"));

            funcionario.setRg(rs.getString("rg"));
            funcionario.setCpf(rs.getString("cpf"));

            funcionario.setUf(rs.getString("uf"));
            funcionario.setCidade(rs.getString("cidade"));
            funcionario.setBairro(rs.getString("bairro"));
            funcionario.setRua(rs.getString("rua"));

            listaFuncionario.add(funcionario);
        }

    close();

    return listaFuncionario;
    }
  • Tenta dar um alias pra Pessoa. Ex: inner join Pessoa p ON p.usuario...

    Thales Minussi   07 de nov de 2015
  • q erro ocorreu?

    Error   07 de nov de 2015
  • 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 '%null% order by Pessoa.nome' at line 1

    Janderson Sebastião Rocha   07 de nov de 2015
  • e no mysql funciona qdo vc coloca null entre %%?

    Error   08 de nov de 2015
  • N MySQL eu preciso colocar entre aspas simples, mas funciona. Como eu estou usando o preparedStatement não é preciso as aspas simples, mas mesmo assim eu já tentei colocar e não funcionou

    Janderson Sebastião Rocha   08 de nov de 2015
Mostrar todos os 8 comentários>
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags mysql java script ou faça a sua própria pergunta.