Принятие значений NULL и вставка в SQLite Java - PullRequest
0 голосов
/ 09 апреля 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) {
        try{
            stmt.setString(1,s[0]);
            stmt.setString(2,s[1]);
            Integer score1 = s[2] != null ? Integer.parseInt(s[2]) : null;
            Integer score2 = s[3] != null ? Integer.parseInt(s[3]) : null;
            stmt.setInt(3, score1);
            stmt.setInt(4, score2);
            stmt.setString(5,s[4]);
            String date = s[4];
            int winner;
            int dateValue = Integer.parseInt(date); 

            if (score1 > score2 && dateValue != 0) {
                winner = 1;
            } else if (score2 > score1 && dateValue != 0) {
                winner = 2;
            } else if(dateValue != 0) {
                winner = 0;
            } else {
                winner = 3;
            }

            String gameWinner = Integer.toString(winner);
        } catch (NumberFormatException e) { 
            e.printStackTrace();
        }
        stmt.execute();         
    }
    stmt.close();
    con.close();
}

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

This is the print stack trace of the NullPointerException i get.

java.lang.NumberFormatException: For input string: "null"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:492)
    at java.lang.Integer.parseInt(Integer.java:527)
    at footballresults.MashapeClient.insertFixtures(MashapeClient.java:130)
    at footballresults.MashapeClient.main(MashapeClient.java:190)

в строке 130 код:

Integer score1 = s[2] != null ? Integer.parseInt(s[2]) : null;

Здесь я пытаюсь проанализировать строку из массива как целое число, если оно не равно нулюЯ хочу, чтобы он был вставлен в базу данных как ноль.Поскольку dateValue равно 0 для сыгранных игр, он не должен входить в число победителей, если в утверждениях.

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

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

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

...