В настоящее время я хочу обновить наличие номеров после того, как бронирование было добавлено в базу данных, но проблема, с которой я столкнулся сейчас, заключается в том, что я не знаю, как обновить количество номеров после бронирования.
Решение, которое мне нужно, заключается в том, что когда я ввожу количество комнат и добавляю, база данных комнат будет минус количество комнат.
Комната Д.А.
public boolean updateRoomQuantity(String roomID, int amountOfRoomLeft){
String sql = String.format("update room set roomAvailability =%d where roomID = '%s'", amountOfRoomLeft, roomID);
try {
stmt = conn.createStatement();
stmt.executeUpdate(sql);
return true;
} catch (SQLException ex) {
Logger.getLogger(RoomDA.class.getName()).log(Level.SEVERE, null, ex);
JOptionPane.showMessageDialog(null, ex.getMessage(), "ERROR", JOptionPane.ERROR_MESSAGE);
return false;
}
}
Бронирование Д.А.
public boolean addRecord(String booID, String booDate, String booTime, String roomID, double roomPrice, int duration, String memberID,
String receptionistID, String checkinStatus, double totalRoomPrice, double totalPrice) {
String sql = String.format("insert into booking values('%s','%s','%s','%s',%.2f,%d,'%s','%s','%s',%.2f,%.2f)", booID, booDate, booTime, roomID, roomPrice, duration, memberID, receptionistID, checkinStatus, totalRoomPrice, totalPrice);
try {
stmt = conn.createStatement();
stmt.executeUpdate(sql);
return true;
} catch (SQLException ex) {
Logger.getLogger(BookingDA.class.getName()).log(Level.SEVERE, null, ex);
JOptionPane.showMessageDialog(null, ex.getMessage(), "ERROR", JOptionPane.ERROR_MESSAGE);
return false;
}
}
Кнопка добавления панели бронирования
private void addBooking() {
double total = 0.0;
int roomQuantity= Integer.parseInt(jtfRoomQuantity.getText().trim());
double price = Double.parseDouble(jtfRoomPrice.getText().trim());
total = (roomQuantity* price);
jtfTotalPrice.setText(String.valueOf(total));
jtfTotalRoomPrice.setText(String.valueOf(total));
if (!emptyFields()) {
if (jcbAutoFillDate.isSelected()) {
jbtFillInDate.doClick();
}
String booID = jtfBookingID.getText();
String booDate = jtfBookingDate.getText();
String booTime = jtfBookingTime.getText();
String roomID = null;
Room room = roomDA.getRecordByName(jtfAutoCompleteRoom.getText());
double roomPrice = Double.parseDouble(jtfRoomPrice.getText());
String memberID = null;
Member member = memberDA.getRecordByName(jtfAutoCompleteMember.getText());
String receptionistID = receptionistDA.getRecordByName(jcbAvailableReceptionist.getSelectedItem().toString()).getReceptionistID();
String checkinStatus = jcbStatus.getSelectedItem().toString();
double totalRoomPrice = Double.parseDouble(jtfTotalRoomPrice.getText());
double totalPrice = Double.parseDouble(jtfTotalPrice.getText());
memberID = member.getMemberID();
roomID = room.getRoomID();
if (bookingDA.addRecord(booID, booDate, booTime, roomID, roomPrice, duration, memberID, receptionistID, checkinStatus, totalRoomPrice, totalPrice)) {
JOptionPane.showMessageDialog(null, "Successfully added");
refreshTableContent();
autoResizeTable();
reset();
}
}
}
2 ответа
использовать roomAvailability =roomAvailability-1
public boolean updateRoomQuantity(String roomID, int amountOfRoomLeft){
String sql = String.format("update room set roomAvailability =roomAvailability-1 where roomID = '%s'", roomID);
try {
stmt = conn.createStatement();
stmt.executeUpdate(sql);
return true;
} catch (SQLException ex) {
Logger.getLogger(RoomDA.class.getName()).log(Level.SEVERE, null, ex);
JOptionPane.showMessageDialog(null, ex.getMessage(), "ERROR", JOptionPane.ERROR_MESSAGE);
return false;
}
}
Перед добавлением новой записи проверьте, больше ли доступность 0. Если она больше нуля, выделите комнату. иначе выделить другую комнату.
В вашем Booking DA вы вставляете новые бронирования, поэтому у вас также есть Room DA, который обновляет количество оставшихся номеров.
roomDA.updateRoomQuantity(roomId, amountOfRoomLeft);
RoomId существует в вашем bookingDA, единственная оставшаяся неизвестная переменная — это amountOfRoomLeft. Следовательно, вам следует написать новый метод, который получает значение amounttOfRoomLeft.
Что-то типа:
public int getRoomQuantity(String roomID){
String sql = String.format("select roomAvailability from room where roomID = '%s'", roomID);
try {
stmt = conn.createStatement();
ResultSet resultset = stmt.execute(sql);
resultset.next();
return resultset.getInt(1);
} catch (SQLException ex) {
Logger.getLogger(RoomDA.class.getName()).log(Level.SEVERE, null, ex);
JOptionPane.showMessageDialog(null, ex.getMessage(), "ERROR", JOptionPane.ERROR_MESSAGE);
}
}
Вы тоже должны делать домашние задания самостоятельно :))
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.
addRecord()
иupdateRoomQuantity()
в одной и той же транзакции. Я пытаюсь понять вашу модель: как в таблицеroom
roomID
может быть связано сamountOfRoomLeft
? По логике кажется, что вы можете забронировать несколько комнат. В случае забронированных 2 номеров вы намерены звонить дваждыupdateRoomQuantity
?... можете ли вы предоставить описание таблицыroom
?