class runner extends TimerTask {
public void run() {
getQuantityStatus();
//checkProdExpiry();
//checkRawExpiry();
//getCountNotify();
}
}
public dashboard() {
Timer t1 = new Timer();
t1.schedule(new runner(), 5,10000);
}
public void getQuantityStatus() {
int countAll = 0;
int countRead = 0;
query1 = "select * from stockProduct";
query5 = " select count(*) from notify_prod where prodID = '"+ID+"' AND location = '"+location+"' AND type is NULL";
query6 = " select count(*) from notify_prod where prodID = '"+ID+"' AND location = '"+location+"' AND status = 'read' AND type is NULL";
try {
stmt1 = conn.createStatement();
rs1 = stmt1.executeQuery(query1);
while(rs1.next()) {
ID = rs1.getString("prodID");
location = rs1.getString("location");
qty = rs1.getString("avl_qty");
stmt5 = conn.createStatement();
rs5 = stmt5 .executeQuery(query5);
while(rs5.next()) {
countAll = rs5.getInt("count(*)");
}
stmt6 = conn.createStatement();
rs6 = stmt6.executeQuery(query6);
while(rs6.next()) {
countRead = rs6.getInt("count(*)");
}
if(countAll == countRead) {
stmt3 = conn.createStatement();
if(stmt3.executeUpdate(query3) == 1) {
//JOptionPane.showMessageDialog(null, "Stock for Product ID " + ID + " at Location - " + location.toUpperCase() + " is currently getting low.", "Warning", JOptionPane.WARNING_MESSAGE);
JOptionPane.showMessageDialog(null, countAll , "Warning", JOptionPane.WARNING_MESSAGE);
JOptionPane.showMessageDialog(null, countRead , "Warning", JOptionPane.WARNING_MESSAGE);
}
}
//if(Integer.parseInt(qty) <= 20) {
//}
}
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Something went wrong", "Error", JOptionPane.ERROR_MESSAGE);
ex.printStackTrace();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
В моей базе данных у меня есть 2 таблицы, называемые таблицей notifyProd и stockProd. Итак, я проверяю все из таблицы stockProd, и пока он получает «prodID» и «location», он проверяет внутри «notifyProd», есть ли запись, которая уже существует в таблице для «ID» и « место».
Функция getQuantityStatus запускается внутри таймера, который планируется выполнять через каждые 5 секунд. Также в настоящее время в таблице notifyProd существует 2 записи в соответствии с заданным идентификатором и местоположением. Поэтому моя проблема заключается в том, что когда я выполняю код, в первой попытке он дает мне 0 и 0 для переменных «countAll» и «countRead», а через 5 секунд он дает правильное значение для 2 и 0 для переменных ». countAll 'и' countRead '. Я не могу понять причину этого. «Query5» получает номер всех записей для определенного идентификатора и местоположения, а «Query6» получает все считанные записи, соответствующие данному идентификатору и местоположению. Конструктор - dashboard (), и внутри него вызывается таймер.