• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Java JDBC - sprawdzanie czy dany rekord w bazie istnieje

0 głosów
418 wizyt
pytanie zadane 17 lipca 2020 w Java przez marzena12345 Użytkownik (770 p.)

Witam, jestem w trakcie tworzenia pierwszej aplikacji, dotyczy ona rezerwacji stolików w restauracji. Mam problem dotyczący sposobu sprawdzenia czy stolik, który wpisał użytkownik istnieje w bazie. To co napisałam działa w ten sposób, że jeżeli mam do wyboru tylko stolik nr 2 to jeżeli wpiszę cyfrę większą od 2 lub litery to ponownie pyta o podanie stolika, gdyż takiego w bazie nie ma, ale gdy wpiszę 1 to przechodzi dalej nie prosząc o poprawną liczbę.

Poniżej wklejam istotny fragment kodu, najprawdopodobniej z metodą checkIfTableExists jest coś nie tak, ale nie mam innego pomysłu. 

 

private static String getTableNumber(Database database, Scanner scan, int restaurantId, String hallNumber) throws SQLException {
        boolean incorrectSign;
        String tableNumber;
        do {
            incorrectSign= false;
            System.out.println("Wybierz numer stolika: ");
            database.showTablesForHall(restaurantId, hallNumber);
            tableNumber = scan.nextLine();
            if (database.checkIfTableExists(database, tableNumber)){
                incorrectSign=true;
                System.out.println("Stolik o podanym numerze nie istnieje");
            }
        }while(incorrectSign);
        return tableNumber;
    }


public void showTablesForHall(int restaurantId, String hallNumber) throws SQLException {
        resultSet = statement.executeQuery("SELECT * FROM tables where hall_id = (SELECT id from halls where number='" + hallNumber + "' AND restaurant_id = (SELECT id from restaurants where id=" + restaurantId + "))");
        while (resultSet.next()) {
            System.out.println(resultSet.getString("number"));
        }
        closeResultSet(resultSet);
    }


public boolean checkIfTableExists(Database database, String tableNumber) throws SQLException {
        resultSet = statement.executeQuery("SELECT number from tables where EXISTS (SELECT number from tables where number='" + tableNumber + "')");
        if (resultSet.isBeforeFirst()) {
            return false;
        } else {
            return true;
        }
    }

 

 

2 odpowiedzi

0 głosów
odpowiedź 17 lipca 2020 przez mbabane Szeryf (79,260 p.)

Sprawdź co zwraca Ci to:

"SELECT number from tables where EXISTS (SELECT number from tables where number='" + tableNumber + "')"

bo tutaj jest coś przekombinowane w tym zapytaniu.

Wystarczy najpewniej: 

select number from tabels where number=tableNumber

 

0 głosów
odpowiedź 18 lipca 2020 przez Wiciorny Ekspert (281,250 p.)
Po co pakujesz Select w select? :D wiesz jak działa w ogóle SELECT?  Kolejnosc wykonywania ... tak zwróć uwagę że select wykonuje się zwykle prawie jako ostatnie.

Podobne pytania

0 głosów
1 odpowiedź 352 wizyt
pytanie zadane 19 marca 2018 w PHP przez mi-20 Stary wyjadacz (13,250 p.)
0 głosów
1 odpowiedź 1,525 wizyt
pytanie zadane 21 stycznia 2018 w PHP przez Vastuney Nowicjusz (160 p.)
0 głosów
3 odpowiedzi 1,126 wizyt
pytanie zadane 23 stycznia 2018 w PHP przez hacker09 Użytkownik (520 p.)

93,426 zapytań

142,421 odpowiedzi

322,647 komentarzy

62,787 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...