Boa tarde meu povo!
to passando um probleminha aki e gostaria que vcs me ajudassem. Segue abaixo seguinte código:
public static void carregaPedidos(){
orcamento.removeAllItems();//orcamento é um JCombobox
orcamento.addItem("Selecione");
sql = "SELECT ped.id_pedido, cli.nome_cli FROM pedido ped INNER JOIN clientes cli ON ped.id_cliente = cli.idcliente" +
" WHERE ped.inativo = 0 ORDER BY ped.id_pedido DESC";
rs = ConsultaBanco(sql);
try {
while(rs.next()){
orcamento.addItem(StringUtils.leftPad(rs.getString(1), 5, "0")+" - "+rs.getString(2));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
Quando entra a tela eu chamo a função tudo normal, porém quando eu peço para recarregar o jcombobox (somente quando tem o removeallitens, já testei sem ele e funciona como o esperado, mas claro que sem remover os ítens anteriores) ele “perde” as funções de action e de vez em quando ele nem executa o resto da função.
Alguém pode me dar uma luz no que fazer?
É um verdadeiro “antipattern” ter um método que retorna um ResultSet. O preferível é ter um método que retorna uma lista de objetos.
No seu caso, está dando problemas porque você recebe um ResultSet aberto mas não o fecha depois de usá-lo, provavelmente. E isso está bagunçando sua conexão ao banco.
Outra coisa que você provavelmente está fazendo errado é usar funções “static”. Não é errado usá-las mas normalmente têm cheiro de que a pessoa que as escreveu não entendeu o espírito da orientação a objetos.
entanglement, boa tarde!
Obrigado pela orientação, com isso vc me deu mais ideias novas, (principalmente do ResultSet) eu to aprendendo a programar sozinho e por isso to tendo certas dificuldades e não sei algumas boas práticas. Mas voltando ao meu problema, o código só da problema quando tem o removeAllItens do JCombobox. Você acha que se eu mudar esta questão do retorno o problema possivelmente pode ser resolvido?
Com em relação ao static, o próprio eclipse pediu para mudar pois dependendo do evento devo chamar esta função a partir da tela principal do sistema.