В настоящее время я хочу обновить наличие номеров после того, как бронирование было добавлено в базу данных, но проблема, с которой я столкнулся сейчас, заключается в том, что я не знаю, как обновить количество номеров после бронирования.

Решение, которое мне нужно, заключается в том, что когда я ввожу количество комнат и добавляю, база данных комнат будет минус количество комнат.

Комната Д.А.

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();
        }
    }
}
0
Leo 3 Мар 2015 в 15:25
AnyOne, пожалуйста, помогите мне связать это .. Большое спасибо
 – 
Leo
3 Мар 2015 в 15:35
Может быть, вы можете добавить триггер на БД?
 – 
sgpalit
3 Мар 2015 в 15:57
Как? Любое решение для меня, чтобы добавить триггер?
 – 
Leo
3 Мар 2015 в 16:01
Лучше всего иметь addRecord() и updateRoomQuantity() в одной и той же транзакции. Я пытаюсь понять вашу модель: как в таблице room roomID может быть связано с amountOfRoomLeft? По логике кажется, что вы можете забронировать несколько комнат. В случае забронированных 2 номеров вы намерены звонить дважды updateRoomQuantity?... можете ли вы предоставить описание таблицы room?
 – 
T.Gounelle
3 Мар 2015 в 16:09
В настоящее время у меня есть 2 базы данных: 1 для бронирования и 1 для комнаты. Поэтому, когда я ввожу количество комнат на панели бронирования, после добавления базы данных комнат количество комнат уменьшится. У меня есть эта проблема прямо сейчас.
 – 
Leo
3 Мар 2015 в 16:09

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. Если она больше нуля, выделите комнату. иначе выделить другую комнату.

0
Gnanadurai A 3 Мар 2015 в 16:12

В вашем 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); } }

Вы тоже должны делать домашние задания самостоятельно :))

0
sgpalit 3 Мар 2015 в 16:12