NumberFormatException, поскольку NULL не распознается в подготовленном операторе Java - PullRequest
0 голосов
/ 08 апреля 2019

Я использую подготовленный оператор для вставки в свою базу данных. Некоторые из значений, которые я вставляю, имеют значение ПУСТО (NULL), так как совпадения еще не сыграны, поэтому счет равен NULL, NULL.

void insertFixtures(List<String[]> fixtures) throws SQLException {
    String query = "REPLACE INTO games (team1_id, team2_id, score1, score2, created_at, winner) VALUES (? ,?, ?, ?, ?, ?)";

    Connection con = DBConnector.connect();
    PreparedStatement stmt = con.prepareStatement(query);

    for (String[] s : fixtures) {

        int winner;
        stmt.setString(1, s[0]);
        stmt.setString(2, s[1]);

        String nullTest1 = s[2];

        if (nullTest1 != null) {
            stmt.setString(3, s[2]);
            stmt.setString(4, s[3]);
            stmt.setString(5, s[4]);
            int score1 = Integer.parseInt(s[2]);
            int score2 = Integer.parseInt(s[3]);
            System.out.println(score1);
            System.out.println(score2);
            if (score1 > score2) {
                winner = 1;
            } else if (score2 > score1) {
                winner = 2;
            } else {
                winner = 0;

            }

            String gameWinner = Integer.toString(winner);
            stmt.setString(6, gameWinner);
        } else {
            System.out.println("empty");
            stmt.setString(3, null);
            stmt.setString(4, null);
            stmt.setString(5, s[4]);
            stmt.setString(6, null);
        }

    }
    stmt.execute();
    stmt.close();
    con.close();
}

InsertFixtures принимает массив строк списка и вставляет их в мою базу данных, используя цикл for. У меня проблема с:

if(nullTest1 != null ){

Когда я запускаю этот код в режиме отладки и устанавливаю nullTest1 равным нулю, он пропускает это и переходит в оператор else. Тем не менее, когда я запускаю его в реальном времени, он переходит к этому оператору if и имеет проблему с parseInt со значением NULL.

Это пример строк, которые я пытаюсь вставить в мою базу данных:

Fixture 45 42 1 0 1554642300 
Fixture 49 48 null null 0 

Любая помощь полезна. Спасибо

1 Ответ

1 голос
/ 08 апреля 2019

Вы должны проверить null перед анализом String в Integer:

int score2 = s[3] != null ? Integer.parseInt(s[3]) : 0;

Вам нужно решить, какое должно быть значение, если s[3] is null. Я поставил 0 только для примера.

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