10
Июн
2021

Неизвестное количество знаков подстановки (?) в preparedStatement

У меня есть некая форма с checkbox. Например нужно выбрать кол-во комнат в номере отеля. Если 4 чекбокса, то соответственно первый чекбокс - одна комната в номере, второй - две комнаты и т.д. Я хочу получить все подходящие комнаты из базы данных. Для этого использую preparedStatement, код получится что-то типо:

PreparedStatement ps = null;
        try (Connection con = dbManager.getConnection()) {
            String sql = <<<here my sql>>>
            ps = con.prepareStatement(sql);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            try {
                if (ps != null) {
                    ps.close();
                }
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }

Но я заранее не знаю сколько чекбоксов отметит пользователь. Если отметит 2, то надо будет SELECT * FROM room WHERE number_of_beds = ? or ?;

А если 4, то SELECT * FROM room WHERE number_of_beds = ? or ? or ? or ?;

Как можно вместо ? подставить массив? Или только через циклы и StringBuilder или простую конкатенацию создавать sql?

Источник: https://ru.stackoverflow.com/questions/1294000/%D0%9D%D0%B5%D0%B8%D0%B7%D0%B2%D0%B5%D1%81%D1%82%D0%BD%D0%BE%D0%B5-%D0%BA%D0%BE%D0%BB%D0%B8%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%BE-%D0%B7%D0%BD%D0%B0%D0%BA%D0%BE%D0%B2-%D0%BF%D0%BE%D0%B4%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B8-%D0%B2-preparedstatement

Тебе может это понравится...

Добавить комментарий