Tenho uma tela que cuida do cadastro de docente, após a inserção das informações o usuário clica no botão “Salvar”. No código do actionPerformed do botão “Salvar” é onde passo os dados para a classe de docente e em uma outra classe, que é a que conecta o JAVA com o PostgreSQL, eu pego os dados da classe docente e passo pro banco, na primeira execução as coisas rodam de boa, mas a partir da segunda vez aparece um erro que diz “This connection has been closed.” a conexão foi fechada, ainda não entendo muito bem sobre fechar e abrir a conexão aí não tô sabendo identificar o erro.
Uso o eclipse e o postgres. Segue o código que o eclipse acusou de erro.
Código do botão Salvar:
btnSalvar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
docente.setNome(tfNome.getText());
docente.setPseudo(tfPseudo.getText());
docente.setCelular(tfCelular.getText());
docente.setEmail(tfEmail.getText());
if(rdbtn20h.isSelected()) {
docente.setRegime("20h");
}else if(rdbtn40h.isSelected()) {
docente.setRegime("40h");
}else if(rdbtn40hDE.isSelected()) {
docente.setRegime("40hDE");
}
String selecao = (String) (cbCoordenadoria.getSelectedItem());
ResultSet rs1 = inserir.executarBusca("select CoordCod from coordenadoria where CoordSigla = '"+selecao+"';");//Retorna o codigo da coordenadooria
try {
while(rs1.next()) {
docente.setCoordenadoria(rs1.getInt("CoordCod"));//Passa o codigo da coordenadoria para classe Docente
}
if(rdbtnDisponivel.isSelected()) {
docente.setStatus("Disponível");
}else if(rdbtnIndisponivel.isSelected()) {
docente.setStatus("Indisponível");
}else if(rdbtnSemidisponivel.isSelected()) {
docente.setStatus("SemiDisponível");
if((String)(cbCargo.getSelectedItem())=="Coordenador(a)") {
String selecao1 = (String) (cbCoordenadoria.getSelectedItem());
ResultSet res4 = inserir.executarBusca("select CoordCod from coordenadoria where CoordSigla = '"+selecao1+"'");
while(res4.next()) {
docente.setCoordenadoria(res4.getInt("CoordCod"));
}
String selecao2 = (String) (cbCoordenador.getSelectedItem());
ResultSet res2 = inserir.executarBusca("select CoordCod from coordenadoria where CoordSigla = '"+selecao2+"'");
ResultSet res3 = inserir.executarBusca("select DocCod from docente where DocNome = '"+tfNome.getText()+"'");
while(res2.next()){
coord.setCoordCod(res2.getInt("CoordCod"));
}
while(res3.next()){
docente.setDocCod(res3.getInt("DocCod"));
}
inserir.coordenadorUpdate(docente,coord);//Faz o Update na tabela de coordenadoria, passando o código de docente.
cbCoordenador.removeItem(selecao2);//Remove do comboBox a coordenadoria que teve seu coordenador cadastrado.
}
}
inserir.inserir(docente);
} catch (Exception e) {
e.printStackTrace();
}
JOptionPane.showMessageDialog(null, "Cadastro realizado com sucesso.");
}
});
Código do inserir.executarBusca(sql);
public ResultSet executarBusca(String sql){
try {
PreparedStatement stm = con.prepareStatement(sql);
ResultSet rs = stm.executeQuery();
return rs;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
Código do inserir.inserir(docente);
public void inserir(CLASSDocente docente) {
try {
String sql = "insert into docente (DocCod,DocNome,DocPseudo,DocRegime,DocEmail,DocCelular,DocStatus,CoordCod,DocCargo)\r\n" +
"values (default,?,?,?,?,?,?,?,?);";
PreparedStatement stm = con.prepareStatement(sql);
stm.setString(1, docente.getNome());
stm.setString(2, docente.getPseudo());
stm.setString(3, docente.getRegime());
stm.setString(4, docente.getEmail());
stm.setString(5, docente.getCelular());
stm.setString(6, docente.getStatus());
stm.setInt(7, docente.getCoordenadoria());
stm.setString(8, docente.getCargo());
stm.executeUpdate();
stm.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}