Оператор обновления Java SQL не обновляется в таблице, несмотря на отсутствие ошибок - PullRequest
0 голосов
/ 19 января 2019
public void updateFields(BorrowedBook borrowedBook) throws SQLException {
    Integer copiesInBorrow = new Integer(0);
    Integer availableCopies = new Integer(0);
    PreparedStatement pstmt;
    try {
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT * FROM library_students.book WHERE BookID=" + "'" + getBookID(borrowedBook)+ "'");
        if((rs.next())){
            copiesInBorrow=rs.getInt(11);
            availableCopies=rs.getInt(13);
        }
        pstmt = con.prepareStatement("UPDATE library_students.book SET CopiesInBorrow= ? AND AvailableCopies=? WHERE BookID=?");
        pstmt.setInt(1,++copiesInBorrow);
        pstmt.setInt(2,--availableCopies);
        pstmt.setString(3,getBookID(borrowedBook));
        pstmt.executeUpdate();
        rs.close();
        }catch (SQLException ex) {
            ex.printStackTrace();
        }
}

Я не получаю никаких ошибок и executeUpdate ();возвращается также 1, в чем проблема?

1 Ответ

0 голосов
/ 19 января 2019

У вас есть синтаксическая ошибка, измените на:

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();
    }
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...