Erro: after end of result set / JTextfield pesquisa / alguem consegue resolver?

Pessoal, to fazendo um jtextfield (jTF_Pesquisa) que funciona como pesquisa e quando eu apertar o botao Botao_AbrirClientesCadastrados
quero que ele carregue nos campos destinados os dados do cliente pesquisado.
E na verdade já está tudo funcionando… sendo que o unico problema é que depois que ele faz a primeira pesquisa e coloca os dados nos locais devidos…
a pesquisa para de funcionar… dando o erro: after end of result set

O meu codigo é o deguinte:

[code]private JButton getBotao_AbrirClientesCadastrados() {
if (Botao_AbrirClientesCadastrados == null) {
Botao_AbrirClientesCadastrados = new JButton();
Botao_AbrirClientesCadastrados.setBounds(new Rectangle(1104, 91, 62, 24));
Botao_AbrirClientesCadastrados.setText(“Abrir”);
Botao_AbrirClientesCadastrados.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
try {
conecta_cli.resultset.first();
String igual = “n”;
int tamanho_pesquisa = jTF_Pesquisa.getText().length();
while (igual == “n”) {
String pesquisa = conecta_cli.resultset.getString(“nomeCliente”).substring(0, tamanho_pesquisa);
if (pesquisa.equals(jTF_Pesquisa.getText())) {
igual = “s”;
} else{
conecta_cli.resultset.next();
}
}
conecta_cli.executeSQL(“SELECT * FROM enigmaisbancoddados.cliente where codigoCliente =” +String.valueOf(conecta_cli.resultset.getInt(“codigoCliente”)) + “;”);

	try {
	                while (conecta_cli.resultset.next()) {
		mostrar_dados_cliente();
		}
		} catch (SQLException e1) {
		JOptionPane.showMessageDialog(null, e1);
		}
		} 
catch (SQLException erro) {
JOptionPane.showMessageDialog(null, erro);
}
}
});

}
return Botao_AbrirClientesCadastrados;
}[/code]

public void mostrar_dados_cliente() { try { JTextFieldCodigoCliente.setText(String.valueOf(conecta_cli.resultset.getInt("codigoCliente"))); JTextFieldNome.setText(conecta_cli.resultset.getString("nomeCliente")); jCB_PessoaCliente.setSelectedItem(conecta_cli.resultset.getString("PessoaCliente")); JTF_FantasiaCliente.setText(conecta_cli.resultset.getString("fantasiaCli")); JTextFieldCPF.setText(conecta_cli.resultset.getString("cpfCliente")); jTF_InscEstadual.setText(conecta_cli.resultset.getString("InscEstadual")); jTF_InscMunicipal.setText(conecta_cli.resultset.getString("InscMunicipal")); jTF_EndCliente.setText(conecta_cli.resultset.getString("EndereçoCli")); jTF_ComplementoCli.setText(conecta_cli.resultset.getString("ComplementoCli")); jTF_BairroCli.setText(conecta_cli.resultset.getString("BairroCli")); jTF_CidadeCli.setText(conecta_cli.resultset.getString("CidadeCli")); jTF_CEPcli.setText(conecta_cli.resultset.getString("CEPCli")); jTF_NomeContato1Cli.setText(conecta_cli.resultset.getString("nomeCont1Cli")); jTF_DepartCli.setText(conecta_cli.resultset.getString("DepartCont1Cli")); jTF_TelefoneCli.setText(conecta_cli.resultset.getString("telefoneCont1Cli")); jTF_Celular1Cli.setText(conecta_cli.resultset.getString("Celular1Cont1Cli")); jTF_Celular2Cli.setText(conecta_cli.resultset.getString("Celular2Cont1Cli")); jTF_FaxCli.setText(conecta_cli.resultset.getString("FaxCont1Cli")); jTF_EmailCli.setText(conecta_cli.resultset.getString("emailCont1Cli")); jTF_SiteCli.setText(conecta_cli.resultset.getString("SiteCli")); jTF_NomeContato2Cli.setText(conecta_cli.resultset.getString("nomeCont2Cli")); jTF_DepartamentoCli.setText(conecta_cli.resultset.getString("DepartCont2Cli")); jTF_Telefone2Cli.setText(conecta_cli.resultset.getString("telefoneCont2Cli")); jTF_CelCont2Cli.setText(conecta_cli.resultset.getString("Celular1Cont2Cli")); jTF_EmailCont2Cli.setText(conecta_cli.resultset.getString("emailCont2Cli")); jComboBoxUFcliente.setSelectedItem(conecta_cli.resultset.getString("ufCliente")); jCB_TipoCliente.setSelectedItem(conecta_cli.resultset.getString("TipoCli")); jCB_SexoCli.setSelectedItem(conecta_cli.resultset.getString("SexoCli")); } catch (SQLException erro) { JOptionPane.showMessageDialog(null, erro); } }

Cheguei a ficar com medo desses dois códigos…
PelamordeDeussssssssssssssssssssssssssss, corrige isso aí
1 - Crie uma classe DAO para manipular a conexão com o BD;
2 - Tire o máximo possível de lógica da classe que contém a tela;
3 - Que desgraça de método é esse mostrar_dados_cliente() (aliás, cadê a nomenclatura javaBeans?);
4 - Utilize DTO (Data Transfer Objects) para transitar entre a DAO e a camada de apresentação;
5 - Se eu fosse xiita, diria pra deletar tudo e começar de novo…
6 - Nunca, mas NUNCA mesmo, faça isso

JTextFieldCodigoCliente.setText(String.valueOf(conecta_cli.resultset.getInt("codigoCliente")));

Instancie uma variável para cada valor e, a partir da consulta realizada, depois que os dados foram retornados (através do DTO), pegue-os, atribua-os às respectivas variáveis e, só então, preencha o JTextField…

Certo… vamos lá…
eu posso futuramente usar DAO, DTO e essas outras coisas que vc disse aeh…
mas hj a minha dúvida é onde e como resolver o erro que ta tendo em meu código…
muito fácil vir aki e falar… q código lixo… mas não saber resolver o erro.

Mas pq vc já n usa essas dicas que eu dei agora?
R- pq ainda sou inexperientes pra aventurar nessas coisas…
cheguei a começar a mexer em DAO… tava funcionando…
mas chegou uma hora que ficou um pouco confuso e abandonei por enquanto.

1, Volte ao DAO, é mais simples.
2, O problema é que você está lançando o ResultSet em um outro método, quando você chama a pesquisa novamente, este ResultSet está fechado (after end of ResultSet).
3, Acredite, já fiz código assim, é bem mais complicado que colocar cada coisa em seu devido lugar.
4, Aceitar críticas é parte do processo de aprendizado, se você não consegue lidar com isso, sugiro pesquisar em livros e não perguntar num fórum. Eles não irão criticar nada do que você estiver fazendo ou deixando de fazer.
5, Padrões e boas práticas devem ser sempre seguidos.

Agradeço pela ajuda e digo o mesmo pra vc… aceite minhas criticas!