try-with-resources JDB C с несколькими ресурсами и оператором else - PullRequest
0 голосов
/ 27 апреля 2020

это метод добавления нового pl anet в список наблюдаемых клиентов.

Мне интересно, правильно ли я использую попытку с ресурсами и работает ли автоматическое закрытие.

    public static Customer addPlanet(Customer customer) {
        String query1 = "Select * from planet where planet=? AND universeID=?";
        String query2 = "INSERT INTO planet (planet,universeID) VALUES(?,?)";

        try (PreparedStatement statement = (PreparedStatement) Database.connection.prepareStatement(query1);
             PreparedStatement statement2 = (PreparedStatement) Database.connection.prepareStatement(query2)) {

            statement.setString(1, customer.getPlanet());
            statement.setString(2, Integer.toString(customer.getUniverseID()));

            try (ResultSet rs = statement.executeQuery()) {
                if (rs.next()) {
                    int planetId = rs.getInt(1);
                    customer.setPlanetID(planetId);

                    return customer;
                } else {
                    statement2.setString(1, customer.getPlanet());
                    statement2.setInt(2, customer.getUniverseID());
                    statement2.executeUpdate();

                    return addPlanet(customer);

                }

            } catch (SQLException e) {
                e.printStackTrace();
                return null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return customer;
    }

У меня вопрос: нужно ли заключать эту часть в блок try catch или она закрывается автоматически.

statement2.executeUpdate();

1 Ответ

1 голос
/ 27 апреля 2020

Это закрывается. Все в try закрывается в конце, если они AutoCloseable.

...