У меня возникла проблема, когда мой запрос возвращает результат, и я не могу проверить следующую строку.перейти к следующей строке mySQL JAVA
//here i assume that only "regular" is correct room type
public boolean checkAvalibility(String roomType, String checkInDate, String checkOutDate) throws SQLException{
database db = new database();
db.connect();
this.roomType = roomType;
if(roomType!="regular"){
System.out.println("please select correct room type");
return false;
}
myStmt = db.myConn.prepareStatement("select * from Rooms where "
+ "RoomType = ?");
myStmt.setString(1, roomType);
myRs = myStmt.executeQuery();
boolean val = myRs.next();
while(val){
if(roomType.equals(myRs.getString("RoomType"))){
System.out.println("correct room type");
isType = true;
}
if(isType == true){
int roomNumber = myRs.getInt("idRooms");
if(checkDateAvailability(checkInDate, checkOutDate, roomNumber)==true){
return true;
}
else{
return false;
}
}
}
System.out.println();
return false;
}
этот код здесь
private boolean checkDateAvailability(String checkInDate,String checkOutDate, int roomNumber) throws SQLException{
database db = new database();
db.connect();
myStmt = db.myConn.prepareStatement("select idRooms, CheckIn, CheckOut from Rooms where "
+ "CheckIn=? AND RoomType=?");
myStmt.setString(1, checkInDate);
myStmt.setString(2, roomType);
myRs = myStmt.executeQuery();
boolean val = myRs.next();
while(val){
//calcDateBeetween simply takes check-in date which is in database and current check-out date converts them to integer value and compares the difference
if(calcDateBetween(checkOutDate, myRs.getString("CheckIn")) <=0){
System.out.println("You can book the room");
return true;
}
else{
System.out.println("Dates occupied");
return false;
}
}
if(val==false){
System.out.println("room is available for booking date is empty");
return true;
}
else{
System.out.println("i have no idea of what im doing");
}
return false;
}
качестве предварительного требования, скажем, я хочу иметь только две строки, и мне не нужны новые записи. Если я отправлю дату check-IN (!), Которая соответствует той, что находится в базе данных (в столбце «Check-in»), все работает нормально, и я распечатываю сообщение о том, что дата занята. Но если я отправлю стоимость регистрации ex. 23-01-2015 и выезд 03-02-2015 он не переходит к методу calcDateBetween()
, вероятно, предполагая, что если запрос был пуст, таблица может быть обновлена, и у меня есть распечатка, которую датируют для бронирования. Что может быть решением в этой ситуации и почему она не сравнивает даты во втором случае? Спасибо!
и должен ли я просто удалить 'if (val == false)' тогда? –
Я попробую сейчас, спасибо –
две вещи: 1) когда я удаляю обратные заявления программы сбой, так как методы должны что-то возвращать и 2) любую помощь со второй частью моего вопроса? Почему дата не отмечена значением «27-01-2015»? –