Avatar billede mik28 Seniormester
06. oktober 2003 - 22:39 Der er 19 kommentarer og
1 løsning

Exception, men jeg forstår ikek hvorfor?

Hvad er det som er galt med det her? Jeg er løbet tør for ideer


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

public class Login extends HttpServlet
    {
       
        public void doPost (HttpServletRequest request,
                      HttpServletResponse response)
        throws ServletException, IOException
        {
        PrintWriter        out;
        response.setContentType("text/html");
            StringBuffer buffer = new StringBuffer();

            String navn = request.getParameter ("navn");
            String pass = request.getParameter ("pass");
           
            out = response.getWriter();
            buffer.append("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">");
            buffer.append("<html><head><title>");
            buffer.append("Login");
            buffer.append("</title>");
            buffer.append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">");
            buffer.append("</head>");
       
       
        Databaseforbindelsemysqlprepared d = new Databaseforbindelsemysqlprepared("jdbc:mysql://192.168.1.11/DB?user=USER&password=PASS","com.mysql.jdbc.Driver");
       
        try {
       
           
            Vector vi = new Vector();
            vi.addElement(navn);
            vi.addElement(pass);
           
           
            ResultSet rs = d.select("SELECT name,password FROM users WHERE name=? AND password=?", vi);
           
                if(rs.next()) {
           
                HttpSession session = request.getSession(true);
                session.setMaxInactiveInterval(600); 
               
                String SessionIndhold = navn;
                session.setAttribute("brugernavn", SessionIndhold);
               
            // Who is requesting??
                String remoteadr = request.getRemoteAddr();
           
            // Server time?
                Dato da      = new Dato();
                String dato = da.nyDato();
           
                   
                System.out.println(navn+" har oprettet en session. Request fra: "+remoteadr+" Logget på: "+dato);
           
                buffer.append("<body onload='document.send.submit();');>");
                buffer.append("<form name='send' action='Start' method='post'>");
                buffer.append("<input type='hidden' name='page' value='"+navn+"'>");
                buffer.append("<input type='hidden' name='sel' value=''>");
                buffer.append("</form>");
                buffer.append("</body></html>");
             
               
                }
                else
                {
               
                buffer.append("<body>");
                buffer.append("<form action='/' method='get'>");
                buffer.append("<h1>Wrong username or password</h1>");
                buffer.append("<input type='submit' value='Try again'>");
                buffer.append("</form>");
                buffer.append("</body></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 mik28 Seniormester
06. oktober 2003 - 22:46 #1
java.lang.NullPointerException
    at util.Databaseforbindelsemysqlprepared.select(Databaseforbindelsemysqlprepared.java:33)
    at Login.doPost(Login.java:41)
Avatar billede arne_v Ekspert
06. oktober 2003 - 22:50 #2
Hvad står der i Databaseforbindelsemysqlprepared.java linie 33 og i linierne
ovenover ?
Avatar billede mik28 Seniormester
06. oktober 2003 - 22:53 #3
package util;
import java.util.Vector;
import java.sql.*;


public class Databaseforbindelsemysqlprepared
{
    private Connection conn ;
    private PreparedStatement pstmt;
       
    public Databaseforbindelsemysqlprepared(String data, String driver)
    {
       
        try
        {
            Class.forName(driver);
            conn = DriverManager.getConnection(data, "", "");

        }
        catch(Exception s)
        {
            System.out.println("SQL dataforbindelse fejlede"+s);
        }   
    }
   
    public ResultSet select(String sql, Vector params)
    {
        ResultSet r = null;
        try
     
        {
    //    System.out.println("SQL=" + sql);
        PreparedStatement pstmt = conn.prepareStatement(sql);
Avatar billede mik28 Seniormester
06. oktober 2003 - 22:56 #4
Det virker fint et andet sted ????????
Avatar billede arne_v Ekspert
06. oktober 2003 - 22:57 #5
Er du sikker på at getConnection ikke er fejlt ?

F.eks. fordi username og password begge blanke ikke er validt.
Avatar billede arne_v Ekspert
06. oktober 2003 - 22:57 #6
Og validt til at logge ind med fra den maskine du sidder på.
Avatar billede mik28 Seniormester
06. oktober 2003 - 23:04 #7
Nu tror jeg jeg kan se problemet
Avatar billede mik28 Seniormester
06. oktober 2003 - 23:07 #8
sitet kører under windows og MySQL serveren kører under linux. Den user som jeg angiver har ikke ret til at connecte. Kan jeg lave om på det. Jeg har det samme problem i forbindelse med en frontend jeg gerne ville bruge
Avatar billede arne_v Ekspert
06. oktober 2003 - 23:10 #9
Så skal du ind på mysql og give adgang til brugernavn@windowsmaskine.
Avatar billede mik28 Seniormester
06. oktober 2003 - 23:15 #10
hvis brugernavnet nu er kurt og windowsmaskinen er 192.168.1.11 hvad skal jeg så skrive?
Avatar billede mik28 Seniormester
06. oktober 2003 - 23:16 #11
Det ville være så fedt at lave den forbindelse
Avatar billede arne_v Ekspert
06. oktober 2003 - 23:20 #12
Det er GRANT kommandoen.

Se:
  http://www.mysql.com/doc/en/GRANT.html

Det må være noget a la:

GRANT SELECT, INSERT, UPDATE, DELETE ON DB TO kurt@192.168.1.11 IDENTIFIED BY 'hemmeligtkodeord';
Avatar billede mik28 Seniormester
06. oktober 2003 - 23:20 #13
Du har sådan set fået mig til at se hvad problemet var så pointene er dine. Det ville bare være stort hvis det kan lade sig gøre at connecte fra en windowsmaskine til min MySQL server
Avatar billede arne_v Ekspert
06. oktober 2003 - 23:22 #14
Prøv ovenfor nævnte kommando.
Avatar billede arne_v Ekspert
06. oktober 2003 - 23:22 #15
Og et svar.
Avatar billede mik28 Seniormester
06. oktober 2003 - 23:25 #16
Jeg bruger bare min windowsbaserende MySQL server mens jeg tester. Så smider jeg det hele over i Linux når det skal på nettet. Tingen er at brugeren har rettighederne til at connecte, bare ikke fra en windowsmaskine, hvis jeg ellers har forstået det rigtigt.
Avatar billede mik28 Seniormester
06. oktober 2003 - 23:28 #17
Jeg sætter meget pris på din hjælp. Tak for det :-)
Avatar billede mik28 Seniormester
06. oktober 2003 - 23:34 #18
Man kan kun have respekt for folk med din kompetance
Avatar billede arne_v Ekspert
06. oktober 2003 - 23:36 #19
Nu bliver jeg jo helt forlegen.

:-)
Avatar billede mik28 Seniormester
06. oktober 2003 - 23:40 #20
Det skal du ikke blive. Du skal bare vide at jeg sætter stor pris på at du gider svare på mine spørgsmål. For mig er det uvurderligt, og jeg kan ikke se noget forkert i at fortælle dig at du er smadder dygtig.
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