Boa tarde. Estou com um problemão e preciso muito de uma ajuda. Vou tentar exemplificar ao máximo:
- Tenho uma JTable onde possui dados do BD certo?
- Estou tentando alterar os dados de linhas específicas que atendam a uma condição;
- Caso seja verdadeira a condição, ele altera a linha específica da tabela.
- Esta condição está atrelada ao tempo de estadia em um estabelecimento.
- Caso os “milisegundos” estejam maior que 24h, preciso que o índice de DIÁRIAS mude para 1, senão deixe em 0.
- O problema é que ele está verificando apenas o primeiro registro da minha JTable, ele não está percorrendo toda ela.
- Vou deixar um exemplo que estou tentando mudar. Agradeço desde já.
if (totalTimeSeconds < 86400) {
for (int j=0; j<jTable1.getRowCount(); j++) {
conexao.abrirConexao();
diaria = 0;
System.out.println(totalTimeSeconds);
PreparedStatement stmt = conexao.con.prepareStatement("UPDATE cadastro SET diaria = " + diaria);
stmt.executeUpdate();
preencherTabela("SELECT * FROM cadastro ORDER BY id");
conexao.fecharConexao();
}
}
Bem, já que ninguém fez questão de me ajudar, tentei e, por parte, consegui resolver o problema. se alguém também o tiver, que dê uma olhada em como eu resolvi.
OBS: minha instrução está percorrendo todos os dados da minha jTable…consigo ver através da saída “System.out.println”, no entanto, não está atualizando a linha correspondente, ou seja, ele está atualizando toda a coluna, que não é o que eu queria.
Time horaBanco;
Date dataBanco;
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat sdfB = new SimpleDateFormat("dd/MM/yyyy");//banco de dados
SimpleDateFormat sdf1 = new SimpleDateFormat("HH:mm:ss");
SimpleDateFormat sdf1B = new SimpleDateFormat("HH:mm:ss");//banco de dados
SimpleDateFormat sdf2 = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
SimpleDateFormat sdf3 = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");//banco de dados
Date data = new Date();
Date hora = new Date();
Date dataHoraA = new Date();
Date dataHoraB = new Date();
Date diferenca = new Date();
String formatData = sdf.format(data); // valor: 07/09/2017
String formatHora = sdf1.format(hora); // valor: 17:35:00
String formatDataHora = formatData + " " + formatHora; //valor: 07/09/2017 17:35:00
try {
dataHoraA = sdf2.parse(formatDataHora);
} catch (ParseException e) {
System.out.println(e.getMessage());
}
try {
conexao.abrirConexao();
conexao.rs.first();
do {
dataBanco = conexao.rs.getDate("data");
String dataBancoF = sdfB.format(dataBanco);//valor: 07/09/2017
horaBanco = conexao.rs.getTime("hora");
String horaBancoF = sdf1B.format(horaBanco); //valor: 17:35:00
String dataHoraBanco = dataBancoF + " " + horaBancoF; //valor: 07/09/2017 17:35:00
dataHoraB = sdf3.parse(dataHoraBanco);
diferenca.setTime (dataHoraA.getTime() - dataHoraB.getTime());
long difMilli = dataHoraA.getTime() - dataHoraB.getTime();
int timeInSeconds = (int)difMilli / 1000;
int hours, minutes, seconds, totalTimeSeconds;
hours = timeInSeconds / 3600;
timeInSeconds = timeInSeconds - (hours * 3600);
minutes = timeInSeconds / 60;
timeInSeconds = timeInSeconds - (minutes * 60);
seconds = timeInSeconds;
totalTimeSeconds = ((hours * 3600) + (minutes * 60) + seconds);
if (totalTimeSeconds < 86400) {
conexao.abrirConexao();
diaria = 0;
System.out.println(totalTimeSeconds);
PreparedStatement stmt = conexao.con.prepareStatement("UPDATE cadastro SET diaria = " + diaria);
stmt.executeUpdate();
}
if (totalTimeSeconds > 86400) {
conexao.abrirConexao();
diaria = 1;
System.out.println(totalTimeSeconds);
PreparedStatement stmt = conexao.con.prepareStatement("UPDATE cadastro SET diaria = " + diaria);
stmt.executeUpdate();
}
}
while (conexao.rs.next());
}
catch (Exception e) {
System.out.println(e);
}
//conexao.fecharConexao();
}