Bom dia Pessoal,
Estou enfrentando um pequeno problema atualmente, com um objeto que estou perdendo após fazer um statement.executeUpdate.
Após realizar a atualização no registro especifíco ele é fechado e eu não consigo continuar atualizando o resto da tabela…
Vou postar aqui os métodos que utilizo, qualquer coisa é só falar que passo mais informaçoes…
Se os métodos estiverem meio confusos é só falar, sou iniciante em Java.
public class Rotina_AtualizaBD {
ConexaoServicos con_ferias = new ConexaoServicos();
ConexaoServicos con_copia = new ConexaoServicos();
public void Rotina()
{
try
{
//conecta com meu banco de dados
con_ferias.conecta();
//obtem a tabela de controle de férias
con_ferias.executeSQL("SELECT * FROM controle_ferias");
//vai para o primeiro registro da tabela
con_ferias.resultset.first();
do
{
//faz uma cópia do objeto férias - não sei se posso fazer isso
con_copia = con_ferias;
//se for diferente de null ele entra para atualizar os meses
if(con_ferias.resultset != null)
{
//método que retorna quantos meses eu tenho em um intervalo de datas
String quantMeses = pega_datas();
//obtem o id do controle
String controle = con_copia.resultset.getString("id_Controle_de_Ferias");
//atualiza o registro
atualiza_registros(quantMeses, controle);
}
else
JOptionPane.showMessageDialog(null,"Não foi possivel atualiza registros....");
//vai para o próximo registro, se não for posssivel sai da repetição, ele está saindo pois o resultset foi fechado
}while(con_ferias.resultset.next());
}
catch(SQLException erro)
{
JOptionPane.showMessageDialog(null,"Rotina não conseguiu percorrer resgistros e atualizar tabela!"+erro);
}
}
public void atualiza_registros(String meses, String controle)
{
try
{
//atualiza diretamente no banco de dados
String atualiza = "UPDATE controle_ferias SET meses_sem_ferias ="+meses+" WHERE id_Controle_de_Ferias ="+controle;
//fecha o resultset - esse é o problema
con_copia.statement.executeUpdate(atualiza);
System.out.println("Registro atualizado com SUCESSO!!"+controle);
}
catch(Exception erro)
{
JOptionPane.showMessageDialog(null, "Não foi possivel atualizar registros do Banco de Dados!");
}
}
//método que chama a classe CalculaMeses responsavel por calcular diferença entre datas
//retorna a quantidade de meses de diferença
public String mesesSemFerias(String ate, String atual)
{
String mesesSem = "";
try
{
//passa a data atual e a data da proxima ferias como parametro
int calc = new CalculaMeses().calcularMeses(ate, atual);
mesesSem = String.valueOf(calc);
return mesesSem;
}
catch(Exception erro)
{
JOptionPane.showMessageDialog(null,"Não foi possivel atualizar banco de dados!"+erro);
}
return mesesSem;
}
//pega as datas para o calculo
public String pega_datas()
{
String meses = "";
try
{
//pega a data da proxima ferias no banco de dados
String dataProxima = con_copia.resultset.getString("Proximas_ferias");
//pega a data atual
String dataHoje = new Data().DataAtual();
//calcula quantos meses tem de intervalo para as ferias
meses = mesesSemFerias(dataProxima, dataHoje);
return meses;
}
catch(SQLException erro)
{
JOptionPane.showMessageDialog(null,"Não foi possivel pegar Datas!");
}
return meses;
}
}
O método funciona, mas somente está atualizando o primeiro registro da minha tabela.
Obrigada pela ajuda.
Fica aguardando…
Abraço.
