Avatar billede mikmakmuk Nybegynder
27. november 2003 - 14:24 Der er 5 kommentarer og
1 løsning

SQL fejl: java.sql.SQLException: Before start of result set 0 S10

Hvad går der galt for mig her, Jeg får SQL fejl: java.sql.SQLException: Before start of result set 0 S10

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import util.Databaseforbindelsemysql;

public class Ipaq extends HttpServlet
    {
       
        public void doPost(HttpServletRequest request,
                      HttpServletResponse response)
        throws ServletException, IOException
        {
        PrintWriter        out;
        response.setContentType("text/html");
       
       
        String result = request.getParameter ("result");
       
        StringBuffer buffer = new StringBuffer();
        out = response.getWriter();
        buffer.append("<html><head><title>Ipaq</title><head>");
        buffer.append("<body>");
       
        Databaseforbindelsemysql d = new Databaseforbindelsemysql("jdbc:mysql://192.168.1.12/DB?user=USER&password=PASS","com.mysql.jdbc.Driver");     
       
        StringBuffer bu = new StringBuffer();
     
          bu.append("select k.kunde, o.ordre_id, v.vare_navn, v.vare_pris ");
        bu.append("from kunder k, ");
        bu.append("ordre o, ");
        bu.append("ordre_linie ol, ");
        bu.append("varer v ");
        bu.append("where k.kunde_id = '"+result+"'");
        bu.append(" and k.kunde_id = o.kunde_id");
        bu.append(" and o.ordre_id = ol.ordre_id");
        bu.append(" and ol.vare_id = v.vare_id;");
     
          ResultSet rs = d.select(bu.toString());
         
          System.out.println(bu.toString());
          System.out.println(result);
       
        buffer.append(bu.toString());
        try {
       
        String kunde  = rs.getString("kunde");
        buffer.append("<h3>"+kunde+"</h3>");
        buffer.append("<table border=\"1\">");
        buffer.append("<tr>");
        buffer.append("<th>Ordre nr.</th>");
        buffer.append("<th>Vare</th>");
        buffer.append("<th>Pris</th>");
        buffer.append("</tr>");
               
               
                while (rs.next()) {
               
                String ordreID  = rs.getString("ordre_id");
                String vare      = rs.getString("vare_navn");
                String pris      = rs.getString("vare_pris");
               
                buffer.append("<tr>");
                buffer.append("<td>"+ordreID+"</td>");
                buffer.append("<td>"+vare+"</td>");
                buffer.append("<td>"+pris+"</td>");
                buffer.append("</tr>");
               
                }
       
        buffer.append("</table>");
        buffer.append("</body>");
        buffer.append("</html>");
       
        } catch (SQLException s) {
                buffer.append("<h3>SQL fejl: " + s.toString() + " "
                + s.getErrorCode() + " " + s.getSQLState() + "</h3>");
        }
       
        out.println(buffer.toString());
        out.close();   
        d.close();
        }

}
Avatar billede arne_v Ekspert
27. november 2003 - 14:26 #1
Du skal kalde rs.next() førend du kan kalde rs.getNoget() !
Avatar billede arne_v Ekspert
27. november 2003 - 14:26 #2
ResultSet rs = d.select(bu.toString()); // select
         
          System.out.println(bu.toString());
          System.out.println(result);
       
        buffer.append(bu.toString());
        try {
       
        String kunde  = rs.getString("kunde");  // <------ rs.getNoget()
        buffer.append("<h3>"+kunde+"</h3>");
        buffer.append("<table border=\"1\">");
        buffer.append("<tr>");
        buffer.append("<th>Ordre nr.</th>");
        buffer.append("<th>Vare</th>");
        buffer.append("<th>Pris</th>");
        buffer.append("</tr>");
               
               
                while (rs.next()) {  // <------ rs.next()
Avatar billede mikmakmuk Nybegynder
27. november 2003 - 14:31 #3
Det er jo klart :-)
Avatar billede mikmakmuk Nybegynder
27. november 2003 - 14:34 #4
Den skal kun skrive det en gang så jeg kan ikke ligge det ind i løkken. Hvordan kan jeg så gøre det ?

String kunde  = rs.getString("kunde");
        buffer.append("<h3>"+kunde+"</h3>");
Avatar billede arne_v Ekspert
27. november 2003 - 14:37 #5
Mit gæt er at du skal:

kalde rs.next() lige efter select

ændre din
  while(rs.next()) {}
til en:
  do { } while(rs.next())
for at få din logik til at virke !
Avatar billede mikmakmuk Nybegynder
27. november 2003 - 14:44 #6
Kønt er det ikke man hvad. Det virker da i det mindste ;-)

int i = 0;
               
                while (rs.next()) {
               
                String kunde    = rs.getString("kunde");
                String ordreID  = rs.getString("ordre_id");
                String vare      = rs.getString("vare_navn");
                String pris      = rs.getString("vare_pris");
               
               
                if (i==0)
                {
                buffer.append("<h3>"+kunde+"</h3>");
                i++;
                }
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

IT-JOB