обновить общее количество элементов в базе данных Java

#java #jdbc

#java #jdbc

Вопрос:

У меня есть элемент в базе данных с заданным количеством. Мне нужно, чтобы это количество обновлялось на сумму, которую я ввожу (qtyPurchased). Например, у элемента есть количество 50, затем я покупаю 5, поэтому новое количество должно возвращать 55, однако с кодом, который у меня есть, он возвращает только 5.

Это то, что у меня есть:

 public void purchased(int qtyPurchased) throws SQLException {
    // TODO: Update the ProductsDB table's quantity for this
    // object's product code.
    try (Connection conn = SimpleDataSource.getConnection()) {
        try (PreparedStatement stat = conn.prepareStatement(
                "UPDATE ProductsDB SET Quantity = ? WHERE Product_Code = ?")) {
            stat.setInt(1, qtyPurchased);
            stat.setString(2, productCode);
            stat.execute();
        }
    }

}
  

Я пытался сделать:

     stat.setInt(1, qty   qtyPurchased);
  

но всегда выдается ошибка. Пожалуйста, помогите! Спасибо

Комментарии:

1. Почему бы не увеличить количество в вашем SQL-запросе? ( UPDATE ProductsDB SET Quantity = Quantity ? WHERE Product_Code = ? ) Я не тестировал это, но я думаю, что это должно сработать

2. В чем ошибка? Не могли бы вы опубликовать трассировку стека? Откуда берется «кол-во»?

3. Ответ @Dorian верен. Прямо сейчас вы всегда устанавливаете количество на значение qtyPurchased вместо текущего количества плюс qtyPurchased.

Ответ №1:

Вам необходимо увеличить количество и обновить базу данных с этим увеличенным значением, как показано ниже.

  public void purchased(int qtyPurchased) throws SQLException {
    // TODO: Update the ProductsDB table's quantity for this
    // object's product code.
    try (Connection conn = SimpleDataSource.getConnection()) {
        try (PreparedStatement stat = conn.prepareStatement(
                (UPDATE ProductsDB SET Quantity = Quantity   ? WHERE Product_Code = ?)) {
            stat.setInt(1, qtyPurchased);
            stat.setString(2, productCode);
            stat.execute();
        }
    }

}
  

Другой вариант — получить количество и сохранить его в переменной, затем увеличить его и отправить в БД. Преимущество этого заключается в возможности использовать новое значение, хранящееся в переменной, в других областях вашего приложения.