14. maj 2002 - 22:06Der er
12 kommentarer og 3 løsninger
resultset.next()
Jeg bruger et resultset fra en databaseforespørgsel til at sætte nogle oplysninger ind i en Gui. Jeg bruger så next()-metoden til at bladre i resultsettet, hvorved oplysningerne i Gui'en også ændres. Men når jeg når til det sidste resultat i resultsettet og kører next(), kaster den en exception. Hvordan undgår jeg dette.
Men jeg vil ikke hente alle data ud af resultsettet, jeg vil bare hente data for den aktuelle så de kan lægges ind i en Gui, og automatisk ændres, næste gang rs.next() køres. Er det virkelig nødvendigt at lægge det ind i f.eks. et array først?
Jeg vil give a-torsten ret: if(rs.next()) { } er en helt korrekt måde at gøre det på. Så der er et eller andet galt. Prøv at vise noget mere kode. Er det f.eks en "select max(kolonnenavn)" kan det godt give et underligt resultat, hvis der ikke er noget resultat af forespørgslen.
Synes godt om
Slettet bruger
14. maj 2002 - 23:24#7
Den måde som jeg vil gøre det på er meget lig disky's. Jeg vil ligge det hele over i en array eller vector også løbe den igennem for det som jeg skal bruge. Men det er jo oxo bare en måde som alle andre :-)
rellin, hvis du via din select statement henter mere end en record fra databasen er det fornuftigt at kopiere indhold over i en java.util.List for at kunne frigive resultset'et igen hurtigt.
Men hvis dit resultset er gyldigt, virker if(rs.next()) også. Hvis det ikke gør skyldes det at du har et helt andet problem.
Jeg tør vædde med, at din fejl skyldes en off-by-one, d.v.s. at du kalder rs.getString("navn") o.s.v EFTER rs.next() har returneret false, d.v.s. du forsøger at læse fra en ikke-eksisterende række.
Måske et eller andet med at du kalder rs.next() og herefter forsøger at vise den aktuelle række (som så ikke længere vises).
En mulighed kunne være, at du forud kalder rs.next() for at se, om der skal være en bladre-frem-knap. Men så skal du naturligvis ikke kalde den i det øjeblik, du faktisk bladrer (men nok for den første).
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.