Continuar gravando no banco se não tiver o registro

[code]
public void inserir_dados()
{
try
{
sqlinsert = “insert into cad_estados (est_nome) "
+ “value (’”+text_estado.getText()+”’)";

        cad_estado.statement.executeUpdate(sqlinsert);
        JOptionPane.showMessageDialog(null,"Gravação realizada");
    }
    catch(SQLException erro)
    {
        JOptionPane.showMessageDialog(null,"Erro ao gravar" + erro);

    }
}
public void Limpar()
{
    text_estado.setText("");
    text_estado.requestFocus();
}
public void Comparar()
{
    try
    {
        String compara = "select est_nome from cad_estados where est_nome = '" + text_estado.getText()+"'";
        cad_estado.executeSQL(compara);
        while (cad_estado.resultset.next())
        {
            JOptionPane.showMessageDialog(null,"Já cadastrado");
            Limpar();
        }
    }
    catch(SQLException erro)
    {
        JOptionPane.showMessageDialog(null,"Erro" + erro);
    }
}

}[/code]

Pessoal me ajudem, quando e chamar o metodo comparar quero que veja se ja contem o registro no banco se contem, diz ja esta cadastrado e se não tem chama o metodo inserir_dados(); e depois pergunta novamente se deseja continuar gravando e compara novamente e vai pro metodo inserir depois

Usa o PreparedStatement que caso ja tenha ele vai dar o erro.