Avatar billede danny_k Nybegynder
14. december 2003 - 10:23 Der er 9 kommentarer og
1 løsning

NullPointerExeption - hjælp

Jeg får en NullPointerExeption når jeg fyrer denne metode af. Jeg har skrevet en kommentar ind efter den den linie de fremkalder den.
Er der nogen der kan gennemskue det, for jeg kan ikke?

    public Emne getEmne(String emne) {
        Emne mitEmne = new Emne();
        Vector v = new Vector();
        try {
            stmt = conn.createStatement();
            rs = stmt.executeQuery("SELECT * FROM emne WHERE emnetitel = '"+emne+"'");
            rs.next();
            int id = rs.getInt("id");
            mitEmne.setId(id);
            mitEmne.setEmne(rs.getString("emnetitel"));
            mitEmne.setTekst(rs.getString("tekst"));
            mitEmne.setAfsender(rs.getString("afsender"));
            mitEmne.setDato(rs.getString("dato"));
            //Samler og sætter modtagerne af emnet udfra emne.id
            stmt = conn.createStatement();
            rs = stmt.executeQuery("SELECT modtager FROM emne_modtager WHERE emne ="+id);
            while(rs.next()){
                v.addElement(rs.getString("modtager"));
            }
            mitEmne.setModtagere(v);
           
            //Samler alle indlæg til emnet udfra emne.id
            stmt = conn.createStatement();
            rs = stmt.executeQuery("SELECT indlæg FROM emne_indlæg WHERE emne = "+emne+" ORDER BY indlæg");
            while(rs.next()){
                int mitId = rs.getInt("indlæg");
                System.out.println("nr:"+mitId);
                stmt = conn.createStatement();
                rs2 = stmt.executeQuery("SELECT afsender, dato, tekst FROM indlæg WHERE id = "+mitId);
                rs2.next();
                System.out.println("gik lige");
                String i_afsender = rs2.getString("afsender");
                String i_dato = rs2.getString("dato");
                String i_tekst = rs2.getString("tekst");
                Indlæg a = new Indlæg(i_afsender, i_dato, i_tekst);
                System.out.println(a.getAfsender());
                mitEmne.tilføjIndlægTilEmne(i_afsender,i_dato,i_tekst);//Det er denne linie som fremkalder NullPointerExeption
               
            }
        }
        catch (SQLException e) {
            System.out.println("Emnet kunne ikke instantieres");
        }
       
        return mitEmne;
    }
Avatar billede _carsten Nybegynder
14. december 2003 - 10:39 #1
Problemet må ligge i metoden: mitEmne.tilføjIndlægTilEmne(i_afsender,i_dato,i_tekst)

og den kan vi jo ikke se
Avatar billede danny_k Nybegynder
14. december 2003 - 10:42 #2
public void tilføjIndlægTilEmne(String _afsender, String _dato, String _tekst) {
        Indlæg a = new Indlæg();
        a.setAfsender(_afsender);
        a.setDato(_dato);
        a.setTekst(_tekst);
        indlægTilEmne.addElement(a);
    }
Avatar billede _carsten Nybegynder
14. december 2003 - 10:47 #3
Du har 2 typer, new Indlæg();  og  new Indlæg(i_afsender, i_dato, i_tekst);

public void tilføjIndlægTilEmne(String _afsender, String _dato, String _tekst) {      Du laver en ny Indlæg() har uden parameter -
      // Indlæg a = new Indlæg();  burde virke
        a.setAfsender(_afsender);
        a.setDato(_dato);
        a.setTekst(_tekst);
        indlægTilEmne.addElement(a);
    }
Avatar billede _carsten Nybegynder
14. december 2003 - 10:52 #4
Jeg forstår ikke rigtigt hvorfor du har den metode

Var dette ikke en kortere vej:

                Indlæg a = new Indlæg(i_afsender, i_dato, i_tekst);
                System.out.println(a.getAfsender());
                indlægTilEmne.addElement(a);
Avatar billede danny_k Nybegynder
14. december 2003 - 10:56 #5
Ja jeg har to typer af Indlæg-konstruktører.
Men jeg er ikke sikker på jeg forstår hvad du mener. Vil du have mig til at benytte den metode som du har rettet til - med den kender jeg jo ikke til 'a' som jeg skal bruge at sætte variablernes værdier.
Avatar billede _carsten Nybegynder
14. december 2003 - 11:00 #6
Næh - det har du da fuldstændig ret i

        Indlæg a = new Indlæg();  burde virke
        a.setAfsender(_afsender);
        a.setDato(_dato);
        a.setTekst(_tekst); // I teorien burde det virke hertil
        indlægTilEmne.addElement(a);

Er indlægTilEmne initieret ???
Avatar billede _carsten Nybegynder
14. december 2003 - 11:06 #7
Jeg ville gøre 'a' global i klassen

    public Emne getEmne(String emne) {
        Emne mitEmne = new Emne();
        Vector v = new Vector();
        Indlæg a;

        ..........
        a = new Indlæg(i_afsender, i_dato, i_tekst);
        System.out.println(a.getAfsender());
        indlægTilEmne.addElement(a);

        ............
Avatar billede danny_k Nybegynder
14. december 2003 - 11:07 #8
Jeg sad lige og fik samme tanke før jeg læste din seneste kommentar.
indlægTilEmne er en Vector, men den var kun erklæret som:

  private Vector indlægTilEmne;

løsning:

  private Vector indlægTilEmne = new Vector;

ja - så kan jeg lære det ka' jeg :o)
Avatar billede danny_k Nybegynder
14. december 2003 - 11:07 #9
Stik mig et svar så får du betaling som fortjent
Avatar billede _carsten Nybegynder
14. december 2003 - 11:12 #10
Kommer her
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