@SankaSanka

Почему выбивается ошибка в sql запросе?

Я пытаюсь удалить строку из таблицы по id

public void deleteFilmsOlderGivenYears(int givenYears, Statement st) throws SQLException {
        
        for (Film a : films) {                                                                                       //перебираю коллекцию кино
            int dataRelease = Integer.parseInt(a.getDate_release().substring(0, 4));  //формирую дату
            if (dataRelease < givenYears) {                                                                //нахожу нужную дату
              st.executeQuery("DELETE FROM films WHERE id =" + a.getId());         //пытаюсь удалить кино по ID
            }
        }
    }

выдает вот такое

Exception in thread "main" java.sql.SQLException: Can not issue data manipulation statements with executeQuery().
at mysql.connector.java@8.0.11/com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:127)
at mysql.connector.java@8.0.11/com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95)
at mysql.connector.java@8.0.11/com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:87)
at mysql.connector.java@8.0.11/com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:61)
at mysql.connector.java@8.0.11/com.mysql.cj.jdbc.StatementImpl.checkForDml(StatementImpl.java:390)
at mysql.connector.java@8.0.11/com.mysql.cj.jdbc.StatementImpl.executeQuery(StatementImpl.java:1182)
at HomeLibrary.deleteFilmsOlderGivenYears(HomeLibrary.java:135)
at MainStarter.main(MainStarter.java:27)

причем до этого куча методов в этом классе отлично с этой базой работают по той же схеме получая st. А этот вот уперся((((
a.getId() формируется нормально там int. проблема именно в запросе сделать id string и подставить в запрос тоже не помогает(
  • Вопрос задан
  • 171 просмотр
Решения вопроса 2
@dimuska139
Backend developer
Тебе надо вызывать executeUpdate, а не executeQuery. И, кстати, в чем смысл выполнять запросы к базе в цикле?
Ответ написан
Комментировать
@d-stream
Готовые решения - не подаю, но...
Грубо: executeQuery подразумевает что что-то вернется [в виде данных], а delete (так же как insert, update) - ничего не возвращают
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
tsklab
@tsklab
Здесь отвечаю на вопросы.
executeUpdate()V6fjm.png
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы