Dúvida sobre CONSULTA num RESULTSET

8 respostas
nocland
Pessoal, Tenho um ResultSet com algumas colunas uma delas é "descricão". tenho também um TextField de pesquisa pela descrição e quero que quando o usuário vai digitando a descrição do individuo vai aparencendo num outro TextField descrição. minha lógica esta dando certo mas compara caracter por caracter. Segue o código
private void pesquisarFieldKeyReleased(java.awt.event.KeyEvent evt) {                                           
       String nome=pesquisarField.getText();
        int qtdeLetra=nome.length();
        try {
            rs_produto.first();
            do{
                String nometf=String.valueOf(nome.charAt(qtdeLetra-1)).toUpperCase();
                String nomers=String.valueOf(rs_produto.getString("descricao").charAt(qtdeLetra-1)).toUpperCase();
                
                if(nometf.equals(nomers)){
                    codigoField.setText(rs_produto.getString("codigo"));
                    descricaoField.setText(rs_produto.getString("descricao"));
                    break;
                }
            }while(rs_produto.next());
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }

Alguém conhece uma forma melhor e correta de fazer esse tipo de pesquisa?

8 Respostas

Marky.Vasconcelos

Acho que isso

String nometf=String.valueOf(nome.charAt(qtdeLetra-1)).toUpperCase();   
               String nomers=String.valueOf(rs_produto.getString("descricao").charAt(qtdeLetra-1)).toUpperCase();   
                 
               if(nometf.equals(nomers)){

Dava para deixar como strings mesmo

String nometf = nome.toUpperCase();
               String nomers= rs_produto.getString("descricao").toUpperCase;
                 
               if(nometf.contains(nomers)){
Marky.Vasconcelos

Você não pode usar na Query um LIKE %nome%?

nocland

é pq é o seguinte estou trabalhando com todos os campos da tabela do BD, e minha aplicação
fica bem mais leve se coloco tudo num resultset e trabalho com ele, pegando os dados que quero
vc sabe uma forma melhor?
pois acho que fica enviável ficar fazendo uma consulta no bd a cada caracter digitado.

fabim

Uma JComboBox auto-completável ( vc digita e ele vai te sugerindo o complete, igual os browsers fazem ) nao é melhor não?

Marky.Vasconcelos

Isso não deixa o ResultSet desatualizado?

nocland

É uma boa opção mas particularmente, não gosto de trabalhar com ComboBox, até porque ele só procura a primeira letra do item, não é?.
E eu quero que apareça da sequinte forma.

O usuário digita A
aparece ANDRE LUIS
O usuário digita AN
aparece ANDRE LUIS
O usuário digita ANA
aparece ANA MARIA DA SILVA.

nocland

Não, o ResultSet será apenas para consulta, não terei que efetuar mudanças nele.

fabim

Pega a sua consulta, ordena ela por nome, joga sua consulta num List e depois pesquisa dentro do List com binarySearch.

Assim vc só tem 1 consulta ao banco.

Mas mesmo assim acho estranho essa abordagem…

Criado 22 de novembro de 2007
Ultima resposta 22 de nov. de 2007
Respostas 8
Participantes 3