28. maj 2003 - 16:16Der er
2 kommentarer og 1 løsning
Summering over ResultSet
Findes der Java-klasser, som kan summere over et ResultSet, f.eks. efter query mod en database? Summationen skal gerne kunne opdele på "klasse-variabler" i datasættet.
Hvis altså man indlæser et datasæt med oplysninger om antal indbyggere på "klasserne" landsdel, amt, kommune, skal der kunne summeres på disse "klasser".
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Du er nødt til selv at løbe igennem alle records i ResultSet og tælle op.
Formentlig vil performanve være langt bedre med enkelt queries a la: SELECT COUNT(*) ... WHERE ... eller SELECT SUM(*) ... WHERE ... fordi så skal data ikke ud på netværket.
Det er lige præcis kommunikationen med netværket jeg vil undgå. Jeg forestiller mig, at min eneste kommunikation med netværket er første gang jeg læser grunddata ind, hvorefter jeg dynamisk skal kunne summere på det indlæste.
Det smarte ville jo være, hvis jeg i passende forstand kunne foretage nye queries mod det allerede indlæste, altså mod et ResultSet-objekt. Men som jeg forstår dig, tilbyder Java/JDBC ikke sådan funktionalitet.
I modsætning til hvad mange tror, så indeholder et ResultSet ikke alle records.
Et normalt ResultSet er hvad database folket kender som en cursor. Det er next metoden der faktisk henter data.
Muligvis kan du have fornøjelse af et scrollable ResultSet, som du kan løbe igennem flere gange. Jeg vil tror at de fleste implementationer af et scrollable ResultSet faktisk henter alle data ved executeQuery.
Alternativt må du hente alle data og gemme i en Vector/arraylist eller lignende.
Hvis du kun skal have lavet simple COUNT og SUM så er det langt hurtigere at lade dem blive udført på server og kun flyttet et enkelt tal over netværket.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.