Avatar billede jespersahner Nybegynder
28. maj 2003 - 16:16 Der 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".
Avatar billede arne_v Ekspert
28. maj 2003 - 16:20 #1
Nej ikke i standard JDBC.

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.
Avatar billede jespersahner Nybegynder
01. juni 2003 - 10:07 #2
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.
Avatar billede arne_v Ekspert
01. juni 2003 - 16:30 #3
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.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester