Всегда дает значение 0 в первый раз - PullRequest
0 голосов
/ 01 сентября 2018
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 (), и внутри него вызывается таймер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...