Avatar billede mik28 Seniormester
16. maj 2004 - 06:08 Der er 16 kommentarer og
1 løsning

virker under Windows men ikke under Linux

Hej,

Jeg har et problem med at få noget kode til at virke under Linux. Det som undre mig er at det virker fint under Windows. For at få fejlen skal man logge ind (test, 12345abc) og vælge en bane.

Windows: http://web-oasen.dk:8080/golf/
Linux  : http://web-oasen.dk/golf/

Som det fremgår smider den er SQL exception under linux, men hvorfor?

package framework;

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.sql.*;
import util.*;


public class Mboks1
{
 
  public String visMboks1(int b, String navn)
  {
 
  StringBuffer buffer = new StringBuffer();
 
  Databaseforbindelsemysqlprepared d = new Databaseforbindelsemysqlprepared("jdbc:mysql://URL/DB?user=USER&password=PASS", "org.gjt.mm.mysql.Driver");
 
  if (b==1)
  {
  buffer.append("<table style=\"width:140px;border:ridge;border-width:thin;text-align:center;\">\n");
  buffer.append("<tr><td>\n");
  buffer.append("Login");
  buffer.append("</td></tr>\n");
  buffer.append("<tr><td>\n");
  buffer.append("<form method=\"post\" name=\"loginform\" action=\"./\">\n");
  buffer.append("<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n");
  buffer.append("<tr>\n");
  buffer.append("<tr><td style=\"width:50%;\">User</td><td><input type=\"text\" name=\"user\" value=\"\" size=\"8\" class=\"inputf\"></td></tr>\n");
  buffer.append("<tr><td style=\"width:50%;\">Pass</td><td><input type=\"password\" name=\"pass\" value=\"\" size=\"8\" class=\"inputf\"></td></tr>\n");
  buffer.append("<input type=\"hidden\" name=\"start\" value=\"start\">\n");
  buffer.append("<tr style=\"height:30px\"><td colspan=\"2\"><input type=\"submit\" value=\"Login\" class=\"knap\"><button class=\"knap\" onclick=\"java script:openwin('./index/ny_bruger_form.html', 'NY', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=yes,height=250,width=400,top=145,left=175,screenY=150,screenX=100');\">Ny bruger</button></td></tr>\n");
  buffer.append("</form></table>\n");
  buffer.append("</td></tr>\n");
  buffer.append("</table>\n");
  buffer.append("<br>\n");
 
  buffer.append("<form name=\"baner\" method=\"post\" action=\"./\">\n");
  buffer.append("<select name=\"baner\" onchange=\"document.baner.submit();\">\n");     
     
      try
                {
                Vector vi0 = new Vector();
               
                ResultSet rs = d.select("SELECT ID,navn FROM baner", vi0);
                           
                    buffer.append("<option value=\"1\">Vælg bane\n");
                    while(rs.next())
                    {
                    String ID          = rs.getString("ID");
                    String banenavn    = rs.getString("navn");
                    buffer.append("<option value="+ID+">"+banenavn+"\n");               
                 
                    }
                    buffer.append("</select>\n");
                      buffer.append("</form>\n");
                   
               
               
                } catch (SQLException s) {
                        buffer.append("<h3>SQL fejl: " + s.toString() + " "
                        + s.getErrorCode() + " " + s.getSQLState() + "</h3>");
                        }
 
  buffer.append("<button class=\"knap\" onclick=\"java script:openwin('./index/ny_bruger_form.html', 'NY');\">Kalender</button>\n");
  buffer.append("<br>\n");
  buffer.append("<button class=\"knap\" onclick=\"java script:openwin('./index/ny_bruger_form.html', 'NY');\">Baner</button>\n");
  buffer.append("<br>\n");
  buffer.append("<button class=\"knap\" onclick=\"java script:openwin('./index/ny_bruger_form.html', 'NY');\">Links</button>\n");
  }
 
  else
  {
 
 
  buffer.append("Velkommen");
  buffer.append("<br>");
  buffer.append(navn);
  buffer.append("<form name=\"baner\" method=\"post\" action=\"./\">\n");
  buffer.append("<select name=\"baner\" onchange=\"document.baner.submit();\">\n");
             
              try
            {
            Vector vi0 = new Vector();
           
            ResultSet rs = d.select("SELECT ID,navn FROM baner", vi0);
                       
                buffer.append("<option value=\"1\">Vælg bane\n");
                while(rs.next())
                {
                String ID          = rs.getString("ID");
                String banenavn    = rs.getString("navn");
                buffer.append("<option value="+ID+">"+banenavn+"\n");               
             
                }
                buffer.append("</select>\n");
                  buffer.append("</form>\n");
               
           
           
            } catch (SQLException s) {
                    buffer.append("<h3>SQL fejl: " + s.toString() + " "
                    + s.getErrorCode() + " " + s.getSQLState() + "</h3>");
                    }
 
 
  buffer.append("<button class=\"knap\" onclick=\"java script:openwin('./index/ny_bruger_form.html', 'NY');\">login Kalender</button>\n");
  buffer.append("<br>\n");
  buffer.append("<button class=\"knap\" onclick=\"java script:openwin('./index/ny_bruger_form.html', 'NY');\">Login Baner</button>\n");
  buffer.append("<br>\n");
  buffer.append("<button class=\"knap\" onclick=\"java script:openwin('./index/ny_bruger_form.html', 'NY');\">Login Links</button>\n");

 
  }

  return buffer.toString();
 
  }
 
}
Avatar billede keldsen Nybegynder
16. maj 2004 - 09:51 #1
Hm, jeg har lige prøvet at logge ind på begge maskiner, og ingen af dem giver fejl for mig. Jeg antager du har fået fixet problemet :)

A.
Avatar billede mik28 Seniormester
16. maj 2004 - 10:14 #2
fejlen opstår kun på linux maskinen når man er logget ind og skifter imellem banerne
Avatar billede mik28 Seniormester
16. maj 2004 - 10:16 #3
SQL fejl: java.sql.SQLException: Before start of result set 0 null
Avatar billede mik28 Seniormester
16. maj 2004 - 10:17 #4
Det jeg ikke fatter er hvorfor det ikke sker på Windows maskinen, når det sker på Linux. Koden er jo helt ens
Avatar billede keldsen Nybegynder
16. maj 2004 - 10:45 #5
Hm, mærkeligt.

Jeg sidder og bruger mozilla. Åbnede linux-versionen i en tab og jeg fik fejlen til at opstå. Åbnede en ny tab og loggede ind i windows versionen der, det virkede perfekt, og da jeg gik tilbage til min tab med linux-versionen, virkede den nu også perfekt. Meget mærkeligt.

Koden ser jo fornuftig nok ud, så jeg vil umiddelbart tro at det er noget andet der er problemet. Kører du det gennem tomcat ell. lign.? Kan det være du benytter en forskellig version af java eller mm.mysql på de 2 maskiner?

Og så har jeg aldrig hørt om Databaseforbindelsemysqlprepared, er det et objekt du selv har lavet? Kan det være at der står noget OS-specifikt i nogen af dem? evt. en sti med \ istedet for / ?

Ud over ovenstående er jeg lidt tom for ideer :(

A.
Avatar billede mik28 Seniormester
16. maj 2004 - 14:01 #6
Jeg har kigget på det igen og det er mig en gåde hvad der går galt
Avatar billede mik28 Seniormester
16. maj 2004 - 14:04 #7
Jeg har prøvet at skrive det lidt om, men det hjælper ikke
'
package framework;

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.sql.*;
import util.*;


public class Mboks1
{
 
  public String visMboks1(int b, String navn)
  {
 
  StringBuffer buffer = new StringBuffer();
 
  Databaseforbindelsemysql d1 = new Databaseforbindelsemysql("jdbc:mysqlURL/DB?user=USER&password=PASS", "org.gjt.mm.mysql.Driver");
 
  if (b==1)
  {
  buffer.append("<table style=\"width:140px;border:ridge;border-width:thin;text-align:center;\">\n");
  buffer.append("<tr><td>\n");
  buffer.append("Login");
  buffer.append("</td></tr>\n");
  buffer.append("<tr><td>\n");
  buffer.append("<form method=\"post\" name=\"loginform\" action=\"./\">\n");
  buffer.append("<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n");
  buffer.append("<tr>\n");
  buffer.append("<tr><td style=\"width:50%;\">User</td><td><input type=\"text\" name=\"user\" value=\"\" size=\"8\" class=\"inputf\"></td></tr>\n");
  buffer.append("<tr><td style=\"width:50%;\">Pass</td><td><input type=\"password\" name=\"pass\" value=\"\" size=\"8\" class=\"inputf\"></td></tr>\n");
  buffer.append("<input type=\"hidden\" name=\"start\" value=\"start\">\n");
  buffer.append("<tr style=\"height:30px\"><td colspan=\"2\"><input type=\"submit\" value=\"Login\" class=\"knap\"><button class=\"knap\" onclick=\"java script:openwin('./index/ny_bruger_form.html', 'NY', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=yes,height=250,width=400,top=145,left=175,screenY=150,screenX=100');\">Ny bruger</button></td></tr>\n");
  buffer.append("</form></table>\n");
  buffer.append("</td></tr>\n");
  buffer.append("</table>\n");
  buffer.append("<br>\n");
 
  buffer.append("<form name=\"baner\" method=\"post\" action=\"./\">\n");
  buffer.append("<select name=\"baner\" onchange=\"document.baner.submit();\">\n");     
     
      try
                {
   
                ResultSet rs = d1.select("SELECT ID,navn FROM baner");           
                   
                    buffer.append("<option value=\"1\">Vælg bane\n");
                   
                    while(rs.next())
                    {
                    String ID          = rs.getString("ID");
                    String banenavn    = rs.getString("navn");
                    buffer.append("<option value="+ID+">"+banenavn+"\n");               
                 
                    }
                    buffer.append("</select>\n");
                      buffer.append("</form>\n");
                   
               
               
                } catch (SQLException s) {
                        buffer.append("<h3>SQL fejl: " + s.toString() + " "
                        + s.getErrorCode() + " " + s.getSQLState() + "</h3>");
                        }
  d1.close();
  buffer.append("<button class=\"knap\" onclick=\"java script:openwin('./index/ny_bruger_form.html', 'NY');\">Kalender</button>\n");
  buffer.append("<br>\n");
  buffer.append("<button class=\"knap\" onclick=\"java script:openwin('./index/ny_bruger_form.html', 'NY');\">Baner</button>\n");
  buffer.append("<br>\n");
  buffer.append("<button class=\"knap\" onclick=\"java script:openwin('./index/ny_bruger_form.html', 'NY');\">Links</button>\n");
  }
 
  else
  {
 
 
  buffer.append("Velkommen");
  buffer.append("<br>");
  buffer.append(navn);
  buffer.append("<form name=\"baner\" method=\"post\" action=\"./\">\n");
  buffer.append("<select name=\"baner\" onchange=\"document.baner.submit();\">\n");
             
              try
            {
   
                ResultSet rs = d1.select("SELECT ID,navn FROM baner");               
                buffer.append("<option value=\"1\">Vælg bane\n");
                while(rs.next())
                {
                String ID          = rs.getString("ID");
                String banenavn    = rs.getString("navn");
                buffer.append("<option value="+ID+">"+banenavn+"\n");               
             
                }
                buffer.append("</select>\n");
                  buffer.append("</form>\n");
               
           
           
            } catch (SQLException s) {
                    buffer.append("<h3>SQL fejl: " + s.toString() + " "
                    + s.getErrorCode() + " " + s.getSQLState() + "</h3>");
                    }
 
  d1.close();
  buffer.append("<button class=\"knap\" onclick=\"java script:openwin('./index/ny_bruger_form.html', 'NY');\">login Kalender</button>\n");
  buffer.append("<br>\n");
  buffer.append("<button class=\"knap\" onclick=\"java script:openwin('./index/ny_bruger_form.html', 'NY');\">Login Baner</button>\n");
  buffer.append("<br>\n");
  buffer.append("<button class=\"knap\" onclick=\"java script:openwin('./index/ny_bruger_form.html', 'NY');\">Login Links</button>\n");

 
  }

  return buffer.toString();
 
  }
 
}
Avatar billede keldsen Nybegynder
16. maj 2004 - 14:27 #8
Prøv at identificere hvilket catch-statement det går galt i ved at smide noget output i en logfil eller noget.
Det at det virker når jeg har både windows og linux siden åben, er måske fordi det har noget med en server-side session at gøre?

A.
Avatar billede mik28 Seniormester
16. maj 2004 - 15:30 #9
Det er denne fejl jeg får
SQL fejl: java.sql.SQLException: Before start of result set 0 null
Avatar billede keldsen Nybegynder
16. maj 2004 - 15:35 #10
Jep, men du har to try-catch som begge kan producere denne fejl - spørgsmålet er hvilken af dem der giver fejlen.

Prøv at ændre den første til:
catch (SQLException s) {
buffer.append("<h3>First catch: SQL fejl: " + s.toString() + " "
+ s.getErrorCode() + " " + s.getSQLState() + "</h3>");
}

og den anden til:

catch (SQLException s) {
buffer.append("<h3>Second catch: SQL fejl: " + s.toString() + " "
+ s.getErrorCode() + " " + s.getSQLState() + "</h3>");
}

Eller hvad du nu vil. Bare for at være 100% sikker på hvor fejlen opstår.

A.
Avatar billede mik28 Seniormester
16. maj 2004 - 15:39 #11
sådan
Avatar billede mik28 Seniormester
16. maj 2004 - 16:05 #12
Det er slet ikke der det går galt :-)
Avatar billede mik28 Seniormester
16. maj 2004 - 16:37 #13
det er på den jsp side som styrer det hele
Avatar billede keldsen Nybegynder
16. maj 2004 - 17:29 #14
Så går det da fremad med fejlsøgningen :)
Avatar billede mik28 Seniormester
16. maj 2004 - 17:31 #15
jepper. Jeg tror jeg prøver noget helt andet :-)
Avatar billede mik28 Seniormester
16. maj 2004 - 18:44 #16
Nu virker det. Jeg ved ikke helt hvorfor, men virker det gør det *JUBII*
Avatar billede keldsen Nybegynder
17. maj 2004 - 14:57 #17
Super - if it works, don't fix it :)
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