Erro Ao Prencher Tabela Com uma GetSelectedRow

Fala Pessoal Estou utilizando o seguinte codigo para preencher uma tabela a partir de um item selecionado, com um evento de mouse cliked, porem por vezes funciona e as vezes não.

Estou Utilizando o codigo:
    <private void jTablePesqMouseClicked(java.awt.event.MouseEvent evt) {                                        
            // TODO add your handling code here:
            String nome_admin = ""+jTablePesq.getValueAt(jTablePesq.getSelectedRow(),1);//pega a linha que esta selecionada na tabela,guarda na string nome cliente
             conex.conexao();//conecta como banco
            conex.executaSQL("select *from tabela_adm where nome_admin='"+nome_admin+"'");//String sql que seleciona no banco os dados na tabela cliente pelo atributo nome
            try {
                conex.rs.first();//Seelciona o primeiro elemento
                jTCod.setText(String.valueOf(conex.rs.getInt("id_admin")));//seta o valor no txfield id cliente do banco
                jT_Nome.setText(conex.rs.getString("nome_admin"));//seta o valor no txfield nome cliente do banco
                jT_Usuario.setText(conex.rs.getString("user_admin"));
                jP_Senha.setText(String.valueOf(conex.rs.getInt("senha_admin")));
                jTCod.setText(String.valueOf(conex.rs.getString("id_admin")));
                        } catch (SQLException ex) {
                Logger.getLogger(CadastroCliente.class.getName()).log(Level.SEVERE, null, ex);
                JOptionPane.showMessageDialog(null,"Nao Foi Possivel Preencher a tabela com item selecionado!"+ ex);//imprime erro e o codigo de erro
            }
            conex.deconecta();//desconecta banco de dados
            jB_Editar.setEnabled(true);
            
           
            
        }>

Erro Que Apresenta


Alguem Poderia me dar uma força?

Sua tabela_adm usa como PK a coluna nome_admin ?

Se não for, existe a possibilidade de existir mais de um registro que possua o mesmo valor, o que resulta em uma lista de valores, aí seria o caso de utilizar o next.

Exemplo:

while (conex.rs.next()) {
    /*Recupera todos os valores retornados do banco*/
}

Caso contrário, se esta coluna for sua PK e não existir a possibilidade de existirem registros com o mesmo valor, você precisa isolar a recuperação dos dados do resultSet, pois neste caso não existem dados a serem recuperados.

Exemplo:

if (conex.rs.first()) {
    /*Recupera os valores recuperados*/
}

Fala jonathan_medeiros Obrigado pela ajuda, entao minha Primary key e o id_admin, se eu recuperar os valores pelo id_admin, e recuperar com o conex.rs.netx funcionaria ?

É para funcionar sim!
Se você recuperar pelo id, como ele é sua PK, logo ele é único para cada registro, desta forma você garante que só haverá o retorno de um registro no resultset após realizar a consulta.

Top Demais!!Vlw!!
Bom Testei Aqui E Rodou Belezinha, Outro Probleminha que estou encontrando e quando pesquiso um registro em minusculo por exemplo ele nao me retorna nada e da erro ao preencher a tabela, pode ser problema com insensitive case?

Eu particularmente gosto de salvar os dados sempre em maiúsculo, pra evitar esses probleminhas de case sensitive, mas dá pra contornar!

Aplica um Upper no select e no valor de comparação.

Exemplo:

“ SELECT * FROM TABELA WHERE UPPER(COLUNA) LIKE '” + suaString.toUpperCase() + “' ”

Ai Ficaria Dessa Forma:
conex.executaSQL("SELECT * FROM tabela_adm WHERE nome_admin LIKE '%"+mod.getPesq().toUpperCase()+"%'");`
Assim ele me da erro de ResultSet pedindo o next denovo

A linha sql que me passou seleciona na tabela maiusculo e minusculo ?sem diferenciação e isso ?

Não Brother… Ele busca do banco não importa como está salvo lá e transforma em maiuscula.
Depois ele pega sua String não importa como venha e transforma em maiuscula.
Depois compara as duas.

TextField:

String textField = meuTextField.getText(); //retorna AbAcAtE

Banco:

String banco = "aBaCaTe";

Uso:

String teste1 = textField.toUpperCase(); //retorna ABACATE
String teste2 = banco.toUpperCase(); //retorna ABACATE

teste1 == teste2; //retorna true

A diferença desse exemplo e do que o amigo @Jonathan_Medeiros deu é que ele tá transformando em maiuscula lá no banco de dados mesmo.

Você esqueceu de aplicar o UPPER na coluna da cláusula WHERE jovem, igual no exemplo que te dei.

E coloca essa validação abaixo no seu código, isso garante que ele só vai pegar os dados do resultSet se ele realmente estiver com dados retornados da consulta.

if (conex.rs.first()) {
    /*Recupera os valores recuperados*/
}

Show De Bola Obrigado Aos Amigos Pela Ajuda, Funcionando Beleza!!