Onde pode estar o erro nesta consulta?

A consulta abaixo está infomando que o “Nome informado não existe.”.
Mas existe no BD.

no banco a consulta funciona:
select * from alunos where ALU_NOME = ‘JOAO MARIA DA SILVA’;

    public boolean consulta_Nome(String nome) {
      boolean erro = false;
      ResultSet rs = null;
      // coloquei a linha do trim para ver se resolvia, mas nada.
      // esta vindo o nome  JOAO MARIA DA SILVA na variável nome.
      nome = nome.trim();
      try {
        PreparedStatement pstmt = stm.getConnection().prepareStatement
        ("select * from alunos where ALU_NOME = ?");
        pstmt.setString(1, nome);
        // já tentei assim:
        pstmt.setString(1, "'"+nome+"'");
        rs = pstmt.executeQuery();
        if (rs.next()) {
           setNome(rs.getString("ALU_NOME"));
           setEmail(rs.getString("ALU_EMAIL"));
           erro = true;
        } else {
            new Mostra("Nome informado não existe.");
            erro = false;
          }
      } catch (SQLException ex) {
          new Mostra("Nao localizado a coluna nome." + ex);
          ex.printStackTrace();
          erro = false;
        }
      return erro;
    }

no banco a consulta funciona:
select * from alunos where ALU_NOME = ‘JOAO MARIA DA SILVA’;

Já tentou imprimir a String antes de executa-la como Querry para ver se está correta?
Imprima pra confirmar.

cara ta faltando as aspas simples ‘’

acho que fica assim

PreparedStatement pstmt = stm.getConnection().prepareStatement ("select * from alunos where ALU_NOME = '?'");

não sei se ta certo porque aqui na empresa a gente passa o where pela logica de negocio

 rs = pstmt.executeQuery();

Posso estar enganada, mas nesse ponto o comando executeQuerry não tem que receber uma parâmetro de String?

tenta isso

pstmt.setString(1, getNome());

Você lembrou de colocar aspas exemplo: ‘nome’? Aqui se eu não colocar não retorna nada, pois todo tipo text tem que ter aspas.

OBS: tenta criar um try/catch para que o Java retorne um erro, daí posta o erro aqui.

abrass

Na verdade quando você utiliza PreparedStatement você não precisa escapar strings, logo sua consulta ficaria simplemente assim:

PreparedStatement pstmt = stm.getConnection().prepareStatement  
    ("select * from alunos where ALU_NOME = ?");  
    pstmt.setString(1, nome);  

Seu baco é case sensitve? Os dados estão todos em caixa alta? (Aplicando-se)
Passe o nome com o toUpperCase();

pstmt.setString(1,nome.toUpperCase());

Assim todo nome ele irá colocar em caixa alta.

respondendo aos questionamentos:

  • No BD o nome já esta em maiusculo.
  • Já testei colocando aspas simples, sem aspas simples. Até no fonte tem as duas opções;
  • A select no Bd funciona.

Quando é atribuido o valor de nome ele é passado com caixa alta o caixa baixa?
Se o banco for case sensitive Daniel é diferente de daniel :slight_smile:
Pois um começa com D em maiúsuclo e o outro com d em minúsculo.

Olá,

Alterei, parte do código para:

        [b]String querySql;
        querySql = ("select * from alunos where ALU_NOME = '"+nome+"'");
        rs = stm.executeQuery(querySql);[/b]
        System.out.println(querySql);
        if (rs.next()) {
           setNome(rs.getString("ALU_NOME"));
           setEmail(rs.getString("ALU_EMAIL"));
           setFixo(rs.getString("ALU_FIXO"));
           setCelular(rs.getString("ALU_CELULAR"));
           setData(new Data().converteToString(rs.getDate("ALU_DATA_INCLUSAO")));
           setLocal(rs.getString("ALU_LOCAL_TRABALHO"));
           setCursaTcc1(rs.getString("ALU_CURSA_TCC1"));
           erro = true;
        } else {
            new Mostra("Nome informado não existe.");
            erro = false;
          }
      } catch (SQLException ex) {
          new Mostra("Nao localizado a coluna nome." + ex);
          ex.printStackTrace();
          erro = false;
        }
      return erro;

A querey ficou assim:
select * from alunos where ALU_NOME = ‘JOAO DA SILVA’

se eu copiar esta query para o ibexpert, funciona ele retorna o registro.