W swoim returnAllParts#queryReturnAllParts
metoda, zmień
con.getDBConnection();
Przez
con = getDBConnection();
Problem polega na tym, że con
jest zmienną z java.sql.Connection
i nie ma getDBConnection
metoda. Od bieżącego returnAllParts
klasa rozszerza DBConnect
klasy, może uzyskać dostęp do public Connection getDBConnection
metoda bez problemów.
Dzieje się tak, ponieważ w Twoim Main#main
klasy, zadeklarowałeś DBConnect con
. Nie myl tej zmiennej z con
zmienna zadeklarowana w innych metodach.
Nie jest to bezpośrednio związane z problemem, ale sugeruję kilka ulepszeń do obecnego kodu/projektu:
- Zmień nazwę swojego
returnAllParts
klasę na coś bardziej znaczącego dla przyszłych czytelników (nawet ty za kilka dni lub tygodni staniesz się przyszłym czytelnikiem twojego kodu). Po przeczytaniu twojego kodu wygląda na to, że ta klasa powinna zostać zmieniona naPartList
. - Użyj puli połączeń bazy danych zamiast ręcznie pobierać połączenia. Istnieją biblioteki, które obsługują to na przykład BoneCP
- Prawdopodobnie dopiero zaczynasz programować, więc byłoby lepiej, gdybyś zaczął we właściwy sposób i rozwijał swoją aplikację w warstwach (dalsza lektura:Architektura wielowarstwowa
). Na tej podstawie możemy powiedzieć, że DAO (lub usługa danych, w zależności od tego, jak ją nazwiesz) powinna zawierać tylko metody dostępu i pobierania danych w sposób, w jaki inni klienci mogliby je wykorzystać, jak chcą/potrzebują, więc byłoby to lepsze zwrócenie
List<PartList>
i że inna warstwa w Twojej aplikacji (prawdopodobnie najbliższa prezentacji) zastosuje przekształcenie z Twoich obiektów do ciągu JSON. - Z punktu widzenia projektowania byłoby o wiele lepiej jeśli obiekty dostępu do bazy danych używają
DBConnect
obiekt zamiast wychodzić z niego. W ten sposób możesz mieć jedenDBConnect
obiekt na konfigurację połączenia z bazą danych powiązaną ze wszystkimi powiązanymi obiektami DAO.