Bom dia senhores.
Tenho uma classe que consulta duas bases e se os dados não forem iguais (desatualizados) eu faço um update.
O problema é que, na hora do update, não funciona de maneira que se eu rodar a atualzação novamente os mesmo dados são “atualizados”.
Levem em considereção que a conexão é realizada corretamente.
public void atualizarPostoGradMilitar(Connection conectPMB, Connection conectEBCorp) {
System.out.print("Atualizando Posto/Graduação dos militares:\n\n");
int contador = 0;
try {
String sqlBaseLocal = "select * from permissionario where sit_cod_situacao_perm <> 20" +
"and nr_identidade <> 'SEM IDT'";
PreparedStatement psBaseLocal = conectPMB.prepareStatement(sqlBaseLocal);
ResultSet rsBaseLocal = psBaseLocal.executeQuery();
PreparedStatement psEBCorp = null;
while (rsBaseLocal.next()) {
String sqlEBCorp = "select POSTO_GRAD_CODIGO from MILITAR where PES_IDENTIFICADOR_COD = '"+rsBaseLocal.getString("nr_identidade")+"'";
psEBCorp = conectEBCorp.prepareStatement(sqlEBCorp);
ResultSet rsEBCorp = psEBCorp.executeQuery();
String gradAntiga = rsBaseLocal.getString("pg_cod_posto_grad");
int gradAntigaInt = Integer.parseInt(gradAntiga);
int gradAtual = 0;
while (rsEBCorp.next()){
gradAtual = rsEBCorp.getInt("POSTO_GRAD_CODIGO");
}
try {
if ((gradAntigaInt != gradAtual) & (gradAtual != 0))
{
contador ++;
System.out.println(contador+" - Militar idt "+rsBaseLocal.getString("nr_identidade")+" atualizado. De "+gradAntiga+" para "+gradAtual);
try {
String gradAtualString = String.valueOf(gradAtual);
rsBaseLocal.updateString("pg_cod_posto_grad", gradAtualString);
}catch (Exception e) {
e.printStackTrace();
}
}
psEBCorp.close();
rsEBCorp.close();
} catch (PSQLException e) {
System.out.println("Erro ao atualizar o militar "+rsBaseLocal.getString("nome"));
}
}
psBaseLocal.close();
psEBCorp.close();
System.out.println("\nFim da atualização dos Postos e Graduações da Base Local");
} catch (Exception e) {
e.printStackTrace();
}