Problema com validaÇÃo!

public boolean consisteCliente(String rg) {
boolean retorno = true;

    Connection con = Conection.getInstance();   
       
    if(con != null){   
        try{   
            PreparedStatement pstm = con.prepareStatement("SELECT rg_clie FROM clientes" +   
                    "WHERE rg_clie= ? " );   
            pstm.setString(1, rg);   
            java.sql.ResultSet rs = pstm.executeQuery();   
           
            while(rs.next()){   
                retorno = false;   
            }       
        }catch(SQLException sqle){   
        //Se erro rg nao econtrado, ou seja, valido para cadastro.           
        }   
    }       
    return retorno;           
}  

O que estou querendo fazer é se encontrar o rg nao deixar cadastrar 2 rg iguais. Os numeros de rg estao sendo inseridos neste formato (111.111.111-1) o ,meu select nao esta funcionando, no campo da tabela esta como varchar. O meu problema é q ele nao esta caindo dentro do while do result set, alguem pode me ajudar??

Não seria melhor criar um indice único no banco para essa tabela e deixar que o Banco de Dados faça essa crítica para você ?

Você poderia gravar o campo como numérico, retirando todos os caracteres de formatação ai seu select seria mais simples, senão você terá que fazer uma função no banco de dados para retirar os caracteres especiais para poder fazer a comparação e não é muito legal ficar utilizando funções nos select’s ainda mais dependendo no tamanho do seu BD.

Um…não entendi o que vc tentou explicar…

Qual o banco de dados que você está utilizando ?

Você pode criar regras de validação no próprio banco de dados, com isso você simplesmente dá um INSERT se o banco reclamar volta uma Exception … ai você trata a mensagem.

Vê se dá para criar um índice único na tabela com isso o banco não aceita valores repetidos para um determinado campo da tabela