Datenbank abfrage

Hallo Leute
warum werden die Daten nicht mehr in meiner Tabelle aufgerufen? Es öffnet sich immer ein OptionPane wo drin steht NullPointerException. Wenn ich nun das Programm schließe sagt er mir das dass Programm erfolgreich ausgeführt wurden ist.

       String sql = "select ID,Anrede,Vorname,Nachname,Titel,Geschlecht,Geburtsort,Geburtsdatum,Emailadresse,"
                + "Festnetznummer,Mobilfunknummer,Faxnummer,Firmenname,Position from mitarbeiter";
        try {
            pst = conn.prepareStatement(sql);
            rs = pst.executeQuery();
            tblserver.setModel(DbUtils.resultSetToTableModel(rs));
        }
        catch (Exception e) 
        {
            JOptionPane.showMessageDialog(null, e);
        }
    }```

```private void butpersonalabrufenActionPerformed(java.awt.event.ActionEvent evt) {                                                   
        butpersonalabrufen.setFocusPainted(false);
        UpdateJTablePersonal ();
    }                              ```

Steht in deiner Console die genaue Fehlermeldung, dann kannst du rausfinden woher die NPE kommt.

PS: methodennamen bitte immer lowerCamelCase

EDIT: jetzt seh ichs… wenn ein Fehlerauftritt sagst du selber das er null ausgeben soll
JOptionPane.showMessageDialog(null, e);

Versuch eine aussagekräftigere Fehlermeldung auszugeben, du merkst ja nun selber wie unnütz und nichtsaussagend deine Nachricht ist :wink:

EDIT2: Sind das alle Spalten aus der Tablle? Wenn ja dann nutze doch einfach „Select * From …“ Dann musst du nicht jede einzelne Spalte auswählen im select.

ne in der Console steht nur Erfolgreich ausgeführt das ist ja das komische und vor 1 stunde hat alles noch funktioniert

Sieh Edit in meinem 1. Post

danke erstmal für die schnelle antwort
habe es soweit geändert

       String sql = "select ID,Anrede,Vorname,Nachname,Titel,Geschlecht,Geburtsort,Geburtsdatum,Emailadresse,"
                + "Festnetznummer,Mobilfunknummer,Faxnummer,Firmenname,Position from mitarbeiter";
        try {
            pst = conn.prepareStatement(sql);
            rs = pst.executeQuery();
            tblserver.setModel(DbUtils.resultSetToTableModel(rs));
        }
        catch (Exception e) 
        {
            JOptionPane.showMessageDialog(null, "Bei der Abfrage der Serverdaten ist etwas falsch gelaufen");
        }
    }```

trotzdem zeigt er dann im Joptionpane Bei der Abfrage der Personaldaten ist etwas falsch gelaufen an .

Immer den Stacktrace zumindest die Errormessage mit ausgeben lassen:

            e.printStackTrace();
            JOptionPane.showMessageDialog(null, "Bei der Abfrage der Personaldaten ist etwas falsch gelaufen");
        }```

Hey Michael danke für den hinweis :slight_smile:

	at Hauptmenü.Hauptmenüscreen.UpdateJTablePersonal(Hauptmenüscreen.java:57)
	at Hauptmenü.Hauptmenüscreen.butpersonalabrufenActionPerformed(Hauptmenüscreen.java:676)
	at Hauptmenü.Hauptmenüscreen.access$1900(Hauptmenüscreen.java:12)
	at Hauptmenü.Hauptmenüscreen$20.actionPerformed(Hauptmenüscreen.java:371)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.Component.processMouseEvent(Component.java:6505)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
	at java.awt.Component.processEvent(Component.java:6270)
	at java.awt.Container.processEvent(Container.java:2229)
	at java.awt.Component.dispatchEventImpl(Component.java:4861)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
	at java.awt.Container.dispatchEventImpl(Container.java:2273)
	at java.awt.Window.dispatchEventImpl(Window.java:2719)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:729)
	at java.awt.EventQueue.access$200(EventQueue.java:103)
	at java.awt.EventQueue$3.run(EventQueue.java:688)
	at java.awt.EventQueue$3.run(EventQueue.java:686)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:702)
	at java.awt.EventQueue$4.run(EventQueue.java:700)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:699)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

Dann solltest du auf jeden Fall mal den stacktrace auf der Konsole ausgeben lassen und nicht nur einen Dialog öffnen, der den Fehler nicht näher erläutert. Im catch-Block sollest du dann auch nicht nur allgemein Exception catchen, sondern zwischen den veeschiedenen möglichen Fehlern unterscheiden.

Wenn du sagst vor einer Stunde hat noch alles getan, hat sich etwas an deiner Datenbank oder deiner Umgebung geändert?

[QUOTE=Movementroboter]danke erstmal für die schnelle antwort
habe es soweit geändert

            JOptionPane.showMessageDialog(null, "Bei der Abfrage der Serverdaten ist etwas falsch gelaufen");
```[/QUOTE]


pff, was ist das denn für eine Verbesserung?
vorher wurde die Exception noch übergeben, vielleicht angezeigt, zumindest 'NullPointerException' hast du ja nicht erraten,
der restliche StackTrace in der Tat nicht dabei,

nun streichst du auch diese Info, nur noch Standard-Text ausgeben?

`e.printStackTrace();`
ist die Standard-Behandlung im catch, dann siehst du einen StackTrace, die genaue Zeile in der der Fehler stattfindet,
ein OptionPane kannst du ja nebenher auch noch öffnen, falls dir das hilft

letztlich wird irgendwas null sein, conn oder tblserver oder irgendwas in der resultSetToTableModel()-Methode,
die Zeile aus dem StackTrace hilft dir hoffentlich weiter, sonst allgemein alles prüfen

ja vor einer Stunde hat noch alles funktioniert :frowning: Habe aber auch nix an dem UpdateJTable gemacht darum wundere ich mich warum es jetzt auf einmal nicht mehr funktioniert

Jetzt gilt es nur noch herauszufinden was in dieser Zeile null sein kann und warum.

[QUOTE=SlaterB]pff, was ist das denn für eine Verbesserung?
vorher wurde die Exception noch übergeben, vielleicht angezeigt, zumindest ‚NullPointerException‘ hast du ja nicht erraten,
der restliche StackTrace in der Tat nicht dabei,

nun streichst du auch diese Info, nur noch Standard-Text ausgeben?

e.printStackTrace();
ist die Standard-Behandlung im catch, dann siehst du einen StackTrace, die genaue Zeile in der der Fehler stattfindet,
ein OptionPane kannst du ja nebenher auch noch öffnen, falls dir das hilft

letztlich wird irgendwas null sein, conn oder tblserver oder irgendwas in der resultSetToTableModel()-Methode,
die Zeile aus dem StackTrace hilft dir hoffentlich weiter, sonst allgemein alles prüfen[/QUOTE]

Danke für deinen Beitrag aber das kann man auch netter schreiben. Achso und danke Michael ich versuche den Fehler zu finden und melde mich dann wenn ich ihn gefunden habe :slight_smile:

Könnte es dadran liegen ?

    ResultSet rs = null;
    PreparedStatement pst = null;```

```private void UpdateJTablePersonal () {
       String sql = "select ID,Anrede,Vorname,Nachname,Titel,Geschlecht,Geburtsort,Geburtsdatum,Emailadresse,"
                + "Festnetznummer,Mobilfunknummer,Faxnummer,Firmenname,Position from mitarbeiter";
        try {
            pst = conn.prepareStatement(sql);
            rs = pst.executeQuery();
            tblserver.setModel(DbUtils.resultSetToTableModel(rs));
        }
            catch (Exception e) {
                e.printStackTrace();
            }
    }```

``` private void butpersonalabrufenActionPerformed(java.awt.event.ActionEvent evt) {                                                   
        butpersonalabrufen.setFocusPainted(false);
        UpdateJTablePersonal ();
    }      ```

Welches ist denn die Zeile 57 in Hauptmenüscreen (Umlaute wuerde ich vermeiden)?
Kann es sein, dass Connection nicht initialisiert ist?

[QUOTE=_Michael;28603]Welches ist denn die Zeile 57 in Hauptmenüscreen (Umlaute wuerde ich vermeiden)?
Kann es sein, dass Connection nicht initialisiert ist?[/QUOTE]

       pst = conn.prepareStatement(sql);

gemeint wäre ein Connection conn = new Connection();
ohne das ist und beleibt es es null

Dann schau mal ob conn zu diesem Zeitpunkt schon initialisiert ist.

Bei sowas hilft entweder der Debugger, wo man zur Laufzeit die Variablen anschauen kann, oder eben ein System.out.println nach jeder Zeile wo du zb conn, rs oder tblserver ausgibst.

PS nochmal: Und verbesser bitte deinen Methodennamen (zb UpdateJTablePersonal() vllt gibts noch mehr?), wie gesagt lowerCamelCase bei Methodennamen und wie auch gesagt wurde, Umlaute sollte man auch nicht nutzen.

Machst du ab und an Sicherungen deines Projektstandes? Dann kannst du einfach mit dem letzten Stand vergleichen und vermutlich schnell sehen, warum jetzt ein Fehler auftaucht.