У вас есть синтаксическая ошибка, измените на:
UPDATE library_students.book SET CopiesInBorrow= ?, AvailableCopies=? WHERE BookID=?
Не используйте AND
между столбцами, которые вы хотите обновить. Вы можете использовать AND
в части WHERE
, чтобы применить необходимые условия.
Если вы хотели что-то вроде этого:
UPDATE library_students.book SET CopiesInBorrow= ? WHERE AvailableCopies=? AND BookID=?
тогда использование AND
будет действительным.
Из вашего кода я вижу, что вы просто хотите увеличить значение столбца и уменьшить еще один. Вам не нужно сначала находить эти значения в таблице, а затем вносить изменения.
Вы можете выполнить это утверждение:
UPDATE library_students.book SET CopiesInBorrow = CopiesInBorrow + 1, AvailableCopies = AvailableCopies - 1 WHERE BookID = ?
Итак, измените на это:
public void updateFields(BorrowedBook borrowedBook) throws SQLException {
PreparedStatement pstmt;
try {
Statement stmt = con.createStatement();
pstmt = con.prepareStatement("UPDATE library_students.book SET CopiesInBorrow = CopiesInBorrow + 1, AvailableCopies = AvailableCopies - 1 WHERE BookID = ?");
pstmt.setString(1, getBookID(borrowedBook));
pstmt.executeUpdate();
rs.close();
}catch (SQLException ex) {
ex.printStackTrace();
}
}