Galera, embora seja novo por aki, gosto bastante da comunidade de vcs.
Sempre que surge alguma duvida recorro a consultas por aki. Mas dessa vez o problema está complicado.
Estou desenvolvendo um programa no eclipse e para isso estou utilizando o Mysql como banco de dados.
O meu programa tem uma classe que realiza uma atualização períodica.
Ele lê uma tabela no banco e com base na data verifica se é necessário ou nao realizar um update de categoria naquele registro.
A quantidade de registros e desconhecida. Portanto coloquei um contador que verifica quantos registro tem no banco e vai lendo de um em um até que todos sejam lidos.
ja coloquei um display para verificar e ele consegue ler sim todos os registros do banco.
O meu problema esta no update.
Quando ele encontra um cara que seja necessário alterar, ele calcula um novo valor e insere no banco. Ate ai tudo bem.
Mas ai o programa para. ele não continua lendo.
Se o primeiro update necessario for no registro de cod 10. ele lê somente os 10 registros e altera o 10. Mas para ai.
Se for no 20 a mesma coisa.
Ele lê ate encontrar o primeiro update. Realiza ele e para.
Parece que o update esta cancelando o looping.
Alguem pode me ajudar? Tem algum comando que preciso colocar para o update?
Ja nao sei mais o que pode ser.
Estou colocando o codigo.
sql = “SELECT max(cod) QTD FROM sisb”;
rs = stmt.executeQuery(sql);
sql = “”;
rs.next();
n=0;
n = rs.getInt(“QTD”);
JOptionPane.showMessageDialog(null,"numero de registros: "+n );
for ({int i =1; i <=n; i++)
sql = "select ident, codCatego, categoria, dat from sisb where cod = '"+i+"'";
rs = stmt.executeQuery(sql);
sql = "";
while (rs.next()){
id = rs.getString("ident");
ccat= Integer.parseInt(rs.getString("codCatego"));
cat = rs.getString("categoria");
dn = rs.getString("dat");
System.out.println(" ");
if (!cat.equals("Vc") && !cat.equals("B")){
System.out.println(id+" "+ccat+" "+cat+" "+dn);
System.out.println("É Diferente de b ou vc!");
a = Calcular_update(dn);
System.out.println("Valor do calculo de data: "+a);
if (ccat == 1){
if (a == 1){
msg = ("BM");
}
if (a == 2){
msg = ("No"); }
if (a == 3){
msg = ("B");
}
}
else {
if (a == 1){
msg = ("BF");
}
if (a == 2 || a == 3){
msg = ("Novilha");
}
}
System.out.println("Categoria nova: "+msg);
if (!cat.equals(msg)){
System.out.println("Categorias diferentes");
sql = "update sisb set categoria = '"+msg+"' WHERE cod = '"+i+"'";
stmt.execute(sql);
sql = "";
System.out.println("Alterado");
}
} // Fecha if vc ou b
} // Fecha while
} // Fecha for