Avatar billede mikmakmuk Nybegynder
04. januar 2003 - 15:18 Der er 11 kommentarer og
1 løsning

servlet. SQL

Hej Eksperter

Der syntes at være et problem men denne kode :-) Den kombilerer fint nok, men sqlkaldet lykkes ikke :-(

try {
          ResultSet rs    = d.select("SELECT content FROM pages WHERE name = 'start'");
         
             
              String content  = rs.getString("content");
   
            out.println("<HTML><HEAD><TITLE></TITLE></HEAD>");
            out.println("<BODY>");
            out.println(content);
            out.println("</BODY></HTML>");
       
        } catch (SQLException s) {
                out.println("<h3>SQL fejl: " + s.toString() + " "
                + s.getErrorCode() + " " + s.getSQLState() + "</h3>");
        }
Avatar billede mikmakmuk Nybegynder
04. januar 2003 - 15:19 #1
SQL fejl: java.sql.SQLException: Before start of result set 0 null
Avatar billede arne_v Ekspert
04. januar 2003 - 15:25 #2
Du skal kalde:
  rs.next()
inden:
  rs.getString
Avatar billede arne_v Ekspert
04. januar 2003 - 15:26 #3
Forklaring:

Når du udfører din query står dit result set før først
record.

Du skal kalde rs.next() for at kommen hen til første record.
Avatar billede arne_v Ekspert
04. januar 2003 - 15:27 #4
Og det virke rmåske nok lidt bøvlet i det simple
tilfælde hvor du kun får returneret en record.

Men i det mere generelle tilfælde er det meget bekvemt:

while(rs.next() {
    String x = rs.getString("x");
    String y = rs.getString("y");
}
Avatar billede mikmakmuk Nybegynder
04. januar 2003 - 15:29 #5
Okay. Jeg har sådan set fået det til at virke :-) Jeg behøver ikke ligge det ind i en while(rs.next()) {} hvis jeg er sikker på at der kun er en forekomst i rs vel :-)))
Avatar billede mikmakmuk Nybegynder
04. januar 2003 - 15:30 #6
he he he
Avatar billede mikmakmuk Nybegynder
04. januar 2003 - 15:31 #7
Det er jo sådan jeg plejer at gøre. Jeg havde bare glemt det. Tak for hjælpen :-)))
Avatar billede arne_v Ekspert
04. januar 2003 - 15:32 #8
Nej du behøver ikke ligge en while løkke ind.

Du kan bare kalde rs.next(), men hvis du vil være
rigtigt omhyggelig så checker du lige om det rs.next kald
returnerer true. Hvis det returnerer false, så er der ingen
records d.v.s en eller anden fejl-siutuation.
Avatar billede mikmakmuk Nybegynder
04. januar 2003 - 15:42 #9
if (rs.next() == true)
          {
             
              String content  = rs.getString("content");
   
            out.println("<HTML><HEAD><TITLE></TITLE></HEAD>");
            out.println("<BODY>");
            out.println(content);
            out.println("</BODY></HTML>");
        }
        else
        {
        System.out.println("No records in resultset");
        }
Avatar billede mikmakmuk Nybegynder
04. januar 2003 - 15:43 #10
er det sådan du mener
Avatar billede arne_v Ekspert
04. januar 2003 - 15:44 #11
Ja.

Dog nok:
  if (rs.next())
i.s.f.:
  if (rs.next() == true)
Avatar billede mikmakmuk Nybegynder
04. januar 2003 - 16:05 #12
fedt nok *lol*
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