Код: Выделить всё
@Override
public String getDeleteQuery() {
return "DELETE FROM prod_evidencija WHERE idProdavac = ? AND idProdavnica = ? AND datum = ?";
}
@Override
public void fillDeleteStatement(PreparedStatement ps) throws SQLException {
ps.setInt(1, prodavac.getIdProdavac());
ps.setInt(2, prodavnica.getIdProdavnica());
ps.setDate(3, java.sql.Date.valueOf(datum));
// ps.setObject(3, datum);
System.out.println(datum); //2022-07-24
}
Код: Выделить всё
public Object delete(T obj) throws SQLException {
try (PreparedStatement ps = Konekcija.getInstance().getKonekcija()
.prepareStatement(obj.getDeleteQuery())) {
obj.fillDeleteStatement(ps);
System.out.println(ps);
int affectedRows = ps.executeUpdate();
System.out.println(affectedRows);
return affectedRows > 0;
}
}
com.mysql.cj.jdbc.ClientPreparedStatement: DELETE FROM prod_evidencija WHERE idProdavac = 1 AND idProdavnica = 2 AND datum = '2026-05-11'
Когда этот запрос выполняется вручную в SQLyog, он работает без проблем. Однако в моем Java-приложении после этого ничего не происходит, возвращается 0 затронутых строк, почему я понятия не имею. Я подумал, что это может быть что-то связанное с датой, поэтому попробовал поставить setObject и поэкспериментировать с форматтером, но безрезультатно.
Запрос на обновление, который меняет дату для комбинации идентификаторов, работает нормально. Вставьте тоже.
Исключений и ошибок нет (кроме сделанных мною распечаток), как будто оно просто растворилось в воздухе при выполнении обновления. После добавления отпечатков в fillDeleteStatement() для идентификаторов и даты напечатанная информация также является правильной и соответствует данным в базе.