Как записать значение из командной строки в базу данных, если это определенное двойное значение - PullRequest
0 голосов
/ 16 февраля 2019

Я работаю над программой USB Scale, которая считывает значения из внешней весовой шкалы и записывает их в командную строку, когда взвешенный объект помещается в нее в бесконечном цикле.Однако я пытаюсь включить оператор else if, который, когда значение равно двойному значению «Дюжина яиц» взвешенного объекта, запрашивает базу данных и вставляет значения и атрибуты в таблицу.Кажется, что целое число не сравнивается с двойным значением и пропускает оператор if, и поэтому мне было интересно, как я смогу сделать оператор else if распознаваемым и записать его в базу данных в режиме реального времени одновременно сзначения записываются в командную строку?

Я проверил соединение с базой данных в отдельном классе, и он отлично фиксирует атрибуты, поэтому соединение не является проблемой.

@Override
public void dataEventOccurred(UsbPipeDataEvent upde) {
    boolean empty = data[1] == 2;
    boolean overweight = data[1] == 6;
    boolean negative = data[1] == 5;
    boolean grams = data[2] == 2;
    int scalingFactor = data[3];
    double DozenEggs = 144.0;
    double OneEgg = 0.2;
    int AverageSellingUnitWeight = (data[4] & 0xFF) + (data[5] << 8);

    if (empty) {
        System.out.println("EMPTY");
    } else if (overweight) {
        System.out.println("OVERWEIGHT");
    } else if (negative) {
        System.out.println("NEGATIVE");
    } else if (AverageSellingUnitWeight == DozenEggs) {
        // then we have a dozen eggs in the fridge.
        // add 6 eggs to Fridge table in the database.

        try {
            // create a mysql database connection
            String myDriver = "com.mysql.cj.jdbc.Driver";
            String myUrl = "jdbc:mysql://localhost:3306/smartfridge?autoReconnect=true&useSSL=false;";
            Class.forName(myDriver);
            Connection conn = DriverManager.getConnection(myUrl, "root", "admin");

            // the mysql insert statement
            String query = " insert into fridge (name, UnitOfSale, ContentsQuantity, department, AverageSellingUnitWeight)"
                    + " values (?, ?, ?, ?, ?)";

            // create the mysql insert preparedstatement
            PreparedStatement preparedStmt = conn.prepareStatement(query);
            preparedStmt.setString(1, "Eggs");
            preparedStmt.setInt(2, 1);
            preparedStmt.setInt(3, 6);
            preparedStmt.setString(4, "Milk, Butter & Eggs");
            preparedStmt.setDouble(5, DozenEggs);

            // execute the preparedstatement
            preparedStmt.execute();

            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // ...
}
...