Avatar billede mosquito Nybegynder
24. marts 2003 - 10:45 Der er 18 kommentarer og
1 løsning

ArrayList indeholder kun sidste element fra et resultset.. hjælp!

Hvordan løses problemet..

udskriver fint de enkelte forecasts som er i databasen under gennemløb af results, men alle objekterne i listen forecasts har værdierne fra den sidste forkomst i results.
Alt andet lige, skulle både udskrift og liste indeholde samme informationer.. eller hva? hvordan sikrer jeg mig at listen forecasts indeholder de forskellige elementer fra results? Alle mine objekter i listen er ens, men antallet passer.

ArrayList forecasts = new ArrayList();
while( results.next() )
{
enforecast.setVarenr(results.getInt(1));
enforecast.setUgeAr(results.getInt(2));      enforecast.setBehov(results.getInt(3));
System.out.println(enforecast);
forecasts.add(enforecast);
}
Avatar billede disky Nybegynder
24. marts 2003 - 11:04 #1
Prøv med en:

results.beforeFirst();

foran din while løkke.
Avatar billede mosquito Nybegynder
24. marts 2003 - 11:25 #2
anvender jeg metoden før min while løkke, kastes en exception
java.sql.SQLException: Result set type is TYPE_FORWARD_ONLY

hvilke ændringer skal der laves i min while løkke for at undgå den?
Avatar billede mosquito Nybegynder
24. marts 2003 - 11:30 #3
kan det have noget at gøre med databasen, som er Mysql?
Avatar billede disky Nybegynder
24. marts 2003 - 11:35 #4
nope, jeg bruger selv MySQL.

Lad mig lige se koden fra det tidspunkt hvor du sender en query til basen og til du begynder at parse resultsettet.
Avatar billede =maddog= Nybegynder
24. marts 2003 - 11:46 #5
Du tilføjer konskvent det samme opjekt flere gange til listen. Derfor vil alle referencer pege på samme objekt, og dette objekt indeholder naturligvis data fra sidste opdatering
while (results.next()) {
enforecast = new Forecast();
.. o.s.v. ...
}
Avatar billede mosquito Nybegynder
24. marts 2003 - 11:52 #6
Der castes ikke da jeg tester lokalt, men på klientsiden ser det sådan ud..
ArrayList data = myServerObject.hentData(id,start,slut);
ArrayList forecasts = (ArrayList) data.get(0);
Forecast forecast = (Forecast) forecasts.get(0);
System.out.println(forecast);

En udskrift ser almindeligvis sådan ud, når der udskrives lokalt:
[[ varenr: 1
Uge/År:2
Behov: 100
]]

[[ ]] vises for hver arrayliste..

data er en arrayliste af arraylister, hvor data.get(0) er en liste af Forecasts

stmt = con.createStatement();
results = stmt.executeQuery(sqlforecast);
System.out.print("\nForecastdata pakkes ");
results.beforeFirst();
while( results.next() )
{
enforecast.setVarenr(results.getInt(1));
enforecast.setUgeAr(results.getInt(2));
enforecast.setBehov(results.getInt(3));
System.out.println(enforecast);
forecasts.add(enforecast);
}
data.add(forecasts);
Avatar billede =maddog= Nybegynder
24. marts 2003 - 11:54 #7
Uanset hvad bliver du nød til at oprette nye objekter ved hver tilføjelse.
Avatar billede mosquito Nybegynder
24. marts 2003 - 11:58 #8
jeg prøver lige at oprette et nyt objekt inde i while sætningen.. umiddelbart ser det ud til at virke.. men vender lige tilbage når det er testet...
Avatar billede mosquito Nybegynder
24. marts 2003 - 12:02 #9
maddog >> du er en helt :-) kast et svar og point er på vej
Avatar billede =maddog= Nybegynder
24. marts 2003 - 12:03 #10
ok.
Avatar billede disky Nybegynder
24. marts 2003 - 12:26 #11
hehe

I har da helt ret, okay jeg skulle være gået tidligere i seng i går :)
Avatar billede mosquito Nybegynder
24. marts 2003 - 12:30 #12
disky >> ja nogle gange gør man problemerne større end de er :-) og glemmer at tænke logisk *G*
Avatar billede =maddog= Nybegynder
24. marts 2003 - 12:31 #13
nogle gange bliver man bare kode-blind.. det sker ALT for til på denne side af keyboardet.
Avatar billede disky Nybegynder
24. marts 2003 - 12:33 #14
hehe :)

Ja det kender de fleste nok.

Det værste jeg har prøvet er følgende fejl: (forenklet)

if (x==y);
{
  //lav noget.
}

Jeg brugte bare lang tid på at finde ud af hvorfor jeg IKKE kom ind i if scopet :)
Avatar billede mosquito Nybegynder
24. marts 2003 - 12:36 #15
*GG*

en rigtig 40 fejl *G*
Avatar billede disky Nybegynder
24. marts 2003 - 12:40 #16
Det skal jeg lige love for.
Avatar billede =maddog= Nybegynder
24. marts 2003 - 12:48 #17
min seneste geni-streg var et program der pludselig ikke debuggede. Jeg kørte igen og igen uden en eneste linje på System.out. Eller det troede jeg i hvert fald indtil nærlæsning viste at jeg (genialt) havde sat en log fil på med
System.setOut(new PrintStream(new FileOutputStream("log.txt",true)));
og måtte slette en mega log-fil fuld af bras.
Avatar billede mosquito Nybegynder
24. marts 2003 - 12:55 #18
det fortæller at vi trods alt er menneskelige *G*
Avatar billede disky Nybegynder
24. marts 2003 - 12:57 #19
ja det er helt rart ikke :)
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