Consulta não esta funcionando legal

5 respostas
R

Olá,

Estou tentando fazer uma consulta onde irá mostrar os nomes conforme o usário for digitando os caracteres em jtextfield.
Mas a consulta não esta funcionando legal. Utilizo o firebird.

código do campo jtextfield

jlf_Alunos.setListData(new Vector<String>(obj_Alunos.mostra_Alunos(jtf_Consulta.getText())));

Código da classe DAO dos alunos;

public List<String> mostra_Alunos(String nome) {
      List<String> listaConsulta = new ArrayList<String>();

      ResultSet rs = null;
      try {
        PreparedStatement pstmt = stm.getConnection().prepareStatement
         ("select alu_nome from alunos where (alu_nome BETWEEN ? AND 'Z%') order by alu_nome");
        pstmt.setString(1, "'"+nome+"%'");
        rs = pstmt.executeQuery();
        System.out.println(pstmt);

        while(rs.next()) {
          String nome_aluno = rs.getString("ALU_NOME");
          listaConsulta.add(nome_aluno);
        }
      } catch (SQLException ex) {
          new Mostra("Nao localizado a coluna codigo." + ex);
          ex.printStackTrace();
       }
      return listaConsulta;
    }

5 Respostas

B

Ocorre algum erro?

emmanuelrock

Em vez de between use o operador like. Outra dica, rode a consulta no banco primeiro depois cole no código.

R

Olá,

Já testei no BD a consulta funciona. O problema que só faz a consulta (pelo menos é o que parece) a primeira vez.
Exemplo: digito A (aparece todos os nomes) depois do A digito L, ou seja, AL deveria aparecer os nomes a partir do AL, mas
continua aparecendo todos.
Os nomes no BD estão em maiusculo.
Já tentei com like

("select alu_nome from alunos where alu_nome like ? order by alu_nome");
        pstmt.setString(1, "'%"+nome+"%'");
        rs = pstmt.executeQuery();
emmanuelrock

Dá uma adaptada e tente assim:

String query = "select alu_nome from alunos where alu_nome like '%" + nome + "%' order by id asc";
Statement stmt = sqlConn.setPreparedStatement(query);
ResultSet rs = stmt.executeQuery();

Entendeu? Em vez de setar no PreparedStatement passe a String direto.

Abraço…

R

Valeu pela dica.

funcionou!!!

Criado 10 de agosto de 2009
Ultima resposta 11 de ago. de 2009
Respostas 5
Participantes 3