• 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

Object Storage Arubacloud
0 głosów
293 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,280 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 (270,190 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ź 295 wizyt
pytanie zadane 19 marca 2018 w PHP przez mi-20 Stary wyjadacz (13,190 p.)
0 głosów
1 odpowiedź 1,214 wizyt
pytanie zadane 21 stycznia 2018 w PHP przez Vastuney Nowicjusz (160 p.)
0 głosów
3 odpowiedzi 946 wizyt
pytanie zadane 23 stycznia 2018 w PHP przez hacker09 Użytkownik (520 p.)

92,579 zapytań

141,432 odpowiedzi

319,662 komentarzy

61,964 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...