#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();
}
}
}
Другой вариант — получить количество и сохранить его в переменной, затем увеличить его и отправить в БД. Преимущество этого заключается в возможности использовать новое значение, хранящееся в переменной, в других областях вашего приложения.