• 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

HackNation - ogólnopolski hackathon
0 głosów
470 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 (282,580 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ź 395 wizyt
pytanie zadane 19 marca 2018 w PHP przez mi-20 Stary wyjadacz (13,250 p.)
0 głosów
1 odpowiedź 1,578 wizyt
pytanie zadane 21 stycznia 2018 w PHP przez Vastuney Nowicjusz (160 p.)
0 głosów
3 odpowiedzi 1,191 wizyt
pytanie zadane 23 stycznia 2018 w PHP przez hacker09 Użytkownik (520 p.)

93,628 zapytań

142,551 odpowiedzi

323,051 komentarzy

63,133 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 1936p. - dia-Chann
  2. 1916p. - DziarnowskiJ
  3. 1886p. - Łukasz Piwowar
  4. 1841p. - raydeal
  5. 1840p. - Adrian Wieprzkowicz
  6. 1782p. - rucin93
  7. 1640p. - CC PL
  8. 1616p. - Maurycy W
  9. 1588p. - Tomasz Bielak
  10. 1521p. - Michal Drewniak
  11. 1491p. - Rafał Trójniak
  12. 1471p. - rafalszastok
  13. 1444p. - robwarsz
  14. 1257p. - ssynowiec
  15. 1208p. - Mariusz Fornal
Szczegóły i pełne wyniki

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

Kursy INF.02 i INF.03
...