Problema ao trazer dados no JComboBox através do Evento Mouse Clicked

Boa Noite!!!

Abaixo segue o meu código e abaixo do código esta minha dúvida com relação ao erro.

private void jTablePessoasMouseClicked(java.awt.event.MouseEvent evt) {
String nome_pessoa = “”+jTablePessoas.getValueAt
(jTablePessoas.getSelectedRow(), 1);
conexao.abreConexao();
conexao.executaSQL(“select * from tblpessoa where pes_nome=’”+nome_pessoa+"’");
try {
conexao.rs.first();
txtPesCodigo.setText(Integer.toString(conexao.rs.getInt(“pes_codigo”)));
txtPesNome.setText(conexao.rs.getString(“pes_nome”));
txtPesCpf.setText(conexao.rs.getString(“pes_cpf”));
txtPesRg.setText(conexao.rs.getString(“pes_rg”));
txtPesRua.setText(conexao.rs.getString(“pes_rua”));
txtPesComplemento.setText(conexao.rs.getString(“pes_complemento”));
txtPesNumero.setText(conexao.rs.getString(“pes_numero”));
Conexao conexaoPesquisa = new Conexao();
conexaoPesquisa.abreConexao();
conexaoPesquisa.executaSQL(“select * from tblcidade where cid_codigo=”+conexao.rs.getInt(“tblpessoa.cid_codigo”));
conexaoPesquisa.rs.first();
CBPesCid.setSelectedItem(conexaoPesquisa.rs.getString(“cid_nome”));
conexaoPesquisa.fechaConexao();
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null,“Erro ao selecionar os dados”
+ex.getLocalizedMessage(),“Mensagem”,JOptionPane.ERROR_MESSAGE);
}
}

Todo o CRUD está funcionando, porém quando é carregada a interface na tela do computador, a tabela lista os dados e quando vou fazer o uso do evento MouseClicked ele retorna um erro, “Erro ao selecionar os dados ResultSet não está posicionado corretamente, talvez precise chamar o next”, só que já tentei trocar os dois, já tentei trocar a ordem e nada resolve, não sei mais o fazer, já tentei também trocar os nomes das colunas nos métodos e no banco mais nada resolve.

Toda vez que tento usar o método ele cai direto no catch, ele não entra no try como deveria acontecer.

CBPesCid.setSelectedItem(conexaoPesquisa.rs.getString(“cid_nome”));

Tira a conexãoPesquisa.
Deixa só o rs.getString(“nomeCampoNaTabelaExatamenteIgual”);

Se o nome do campo, lá na sua tabela, estiver com letras maiúsculas (camelCase) você DEVE especificar o rs.getString() da mesma forma. Entendeu?

Outra coisa:

CBPesCid.setSelectedItem(conexaoPesquisa.rs.getString(“cid_nome”));

É setSelectedItem() mesmo? Tentei aqui e não funcionou. Será que o addItem() não resolve pra vc?

Tenta aí e se der outro erro, informa a gente.

Um exemplo que tenho aqui…

Na view:

private void popularComboPessoa(){
	cbxPessoa.removeAllItems();
	cbxPessoa.addItem("Selecione...");
	
	pessoas = dao.Pessoa.pesquisar();
	
	for(bean.Pessoa pessoa : pessoas){
		if(pessoas.size() <= NUMERO_MINIMO_REGISTROS)
			cbxPessoa.setMaximumRowCount(pessoas.size() 
					+ NUMERO_MINIMO_REGISTROS);
		else
			cbxPessoa.setMaximumRowCount(pessoas.size());
		cbxPessoa.addItem(pessoa.getNomePessoa());
	}
}

No DAO:

package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import util.ConectaBancoDeDados;
import util.TransacaoBancoDados;

/**
 *
 * @author JFSJUNIOR
 */
public class Pessoa {
    private static final int NULO = 0;
    private static final int CAMPO_PK = 1;
    
    public static int inserir(bean.Pessoa pessoa) throws SQLException{
        int idPessoa = NULO;
        Connection conectaBancoDeDados = TransacaoBancoDados
                .abrirTransacao();
        
        try{
            String stringSQLInsercao = "INSERT INTO Pessoas(nome_pessoa) "
                    + "VALUES(?)";
            
            try(PreparedStatement pstmt = conectaBancoDeDados
                    .prepareStatement(stringSQLInsercao, 
                            PreparedStatement.RETURN_GENERATED_KEYS)){
            
                pstmt.setString(1, pessoa.getNomePessoa());
                pstmt.execute();

                try(ResultSet rstSet = pstmt.getGeneratedKeys()){
                    if(rstSet != null){
                        rstSet.next();
                        idPessoa = rstSet.getInt(CAMPO_PK);
                    }
                }
            }
        }catch(SQLException sqle){
            TransacaoBancoDados.desfazerTransacao();
            System.out.println("ERRO[" + Pessoa.class.getName() 
                    + " - inserção]: " + sqle.getMessage());
        }
        return idPessoa;
    }
    
    public static void atualizar(bean.Pessoa pessoa) throws SQLException{
        Connection conectaBancoDeDados = TransacaoBancoDados
                .abrirTransacao();
        
        try{
            String stringSQLAtualizacao = "UPDATE Pessoas SET nome_pessoa = ? "
                    + "WHERE id_pessoa = ?";
            
            try(PreparedStatement pstmt = conectaBancoDeDados
                    .prepareStatement(stringSQLAtualizacao)){
                
                pstmt.setString(1, pessoa.getNomePessoa());
                pstmt.setInt(2, pessoa.getIdPessoa());
                pstmt.executeUpdate();
            }
        }catch(SQLException sqle){
            TransacaoBancoDados.desfazerTransacao();
            System.out.println("ERRO[" + Pessoa.class.getName() 
                    + " - atualização]: " + sqle.getMessage());
        }
    }
    
    public static void excluir(bean.Pessoa pessoa) throws SQLException{
        Connection conectaBancoDeDados = TransacaoBancoDados
                .abrirTransacao();
        
        try{
            String stringSQLExclusao = "DELETE FROM Pessoas "
                    + "WHERE Pessoas.id_pessoa = ?";
            
            try(PreparedStatement pstmt = conectaBancoDeDados
                    .prepareStatement(stringSQLExclusao)){
                pstmt.setInt(1, pessoa.getIdPessoa());
                pstmt.executeUpdate();
            }
        }catch(SQLException sqle){
            TransacaoBancoDados.desfazerTransacao();
            System.out.println("ERRO[" + Pessoa.class.getName() 
                    + " - exclusão]: " + sqle.getMessage());
        }
    }
    
    public static List<bean.Pessoa> pesquisar() throws SQLException{
        List<bean.Pessoa> pessoas = new ArrayList<>();
        try(Connection conectaBancoDeDados = ConectaBancoDeDados.getConexao()){
            String stringSQLPesquisa = "SELECT * FROM Pessoas";
            try(PreparedStatement pstmt = conectaBancoDeDados
                    .prepareStatement(stringSQLPesquisa)){
                try(ResultSet rstSet = pstmt.executeQuery()){
                    while(rstSet.next()){
                        bean.Pessoa pessoa = new bean.Pessoa();
                        pessoa.setIdPessoa(rstSet.getInt("id_pessoa"));
                        pessoa.setNomePessoa(rstSet.getString("nome_pessoa"));
                        
                        pessoas.add(pessoa);
                    }
                    rstSet.close();
                }
                pstmt.close();
            }
            conectaBancoDeDados.close();
        }
        return pessoas;
    }
}

Onde:

cbxPessoas é o JComboBox .
NUMERO_MINIMO_REGISTROS é uma contante que vale 3. Caso o número de pessoas seja igual ou menor que três, a popup do JCombBox fica muito pequena. Daí, nesse caso eu faço ela expandir para mais de 3 ao somar o tamanho da lista de pessoas com a constane.

É uma boa prática separar a camada de visão/apresentação (view) da camada de persistência (DAO), ou seja, da manipulação da conexão e manipulação do BD.