I din returnAllParts#queryReturnAllParts
metod, ändra
con.getDBConnection();
Av
con = getDBConnection();
Problemet är att con
är en variabel från java.sql.Connection
och den har ingen getDBConnection
metod. Sedan din nuvarande returnAllParts
klass utökar DBConnect
klass, kan den komma åt public Connection getDBConnection
metod utan problem.
Detta beror på att i din Main#main
klass, har du deklarerat DBConnect con
. Blanda inte ihop denna variabel med con
variabel som deklareras i andra metoder.
Inte direkt relaterat till problemet, men jag föreslår några förbättringar av din nuvarande kod/design:
- Ändra namnet på din
returnAllParts
klass för något mer meningsfullt för framtida läsare (även du i vissa dagar eller veckor kommer att bli en framtida läsare av din kod). Från att ha läst din kod ser det ut som att den här klassen bör bytas om tillPartList
. - Använd en databasanslutningspool istället för att manuellt hämta dina anslutningar. Det finns bibliotek som hanterar detta för dig som BoneCP
- Du är förmodligen ny på programmering, så det vore bättre att du börjar på rätt sätt och utvecklar din applikation i lager (mer läsning:Multitierarkitektur
). Med denna grund kan vi säga att en DAO (eller datatjänst, beror på hur du namnger den) bara bör innehålla metoderna för att komma åt och hämta data på ett sätt som andra klienter kan konsumera det som de vill/behöver, så det skulle vara bättre returnera en
List<PartList>
objekt och att ett annat lager i din applikation (förmodligen det närmaste presentationen) kommer att tillämpa transformationen från dina objekt till en JSON-sträng. - För en designsynpunkt skulle det vara mycket bättre om dina databasåtkomstobjekt använder en
DBConnect
objekt istället för att sträcka sig från det. På detta sätt kan du ha en endaDBConnect
objekt per databasanslutningskonfiguration associerad med alla relaterade DAO.