# Datenbank und Java



## JonnieWalker (19. Mrz 2010)

Hallo Leute,

ich habe ein Problem.
Ich hab eine Klasse ArchivAuswahl wo ich meine Connection usw zur Datenbank und die benötigte Abfrage drinn habe.

Meine zweite Klasse ist die Benutzer Klasse. Hier habe ich alle Attribute die ich in der Datenbanktabelle Benutzer habe deklariert.


Die Tabelle Benutzer beinhaltet ein Passwort und Anmeldenamefeld.
Wie mach ich das, dass er sich das Passwort in der Applikation von der DB holt und in Java abgleicht?.


Also er soll im Fenster Anmeldung von mir den User der sich in der DB befindet abgleichen und sich dann Connectieren


Ich bekomme immer eine Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Nullpointer Exception
ich dreh langsam durch:autsch


```
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * FeAnmeldung.java
 *
 * Created on 03.03.2010, 12:49:05
 */
package darstellungpflichth;

//import java.awt.Color;
import java.awt.Color;
import javax.swing.JOptionPane;


public class FeAnmeldung extends javax.swing.JFrame {

    ArchivAuswahl db;
    Benutzer user;
    /** Creates new form FeAnmeldung */
    public FeAnmeldung() {
        initComponents();


    }

        private void login() {
    String passwort = "";
    if(tfName.getText().isEmpty())
            tfName.setBackground(Color.RED);
        if(tfPass.getPassword().length == 0)
            tfPass.setBackground(Color.RED);
        else {
            for(int i=0;i<tfPass.getPassword().length;i++) {
                try {
                    passwort += tfPass.getPassword()[i];
                }
                catch (Exception ex) {
                    
                }
            }
        }
      user = db.holeBenutzer(tfName.getText(), passwort);
        }

        public Benutzer getUser() {
        return this.user;
    }

  

    private void butAbbActionPerformed(java.awt.event.ActionEvent evt) {                                       
        this.setVisible(false);
        int result = JOptionPane.showConfirmDialog(null,
                "Wirklich Beenden?", "Wirklich Beenden?", JOptionPane.YES_NO_OPTION);

        if (result == JOptionPane.YES_OPTION) {
            System.exit(0);
        }
        if (result == JOptionPane.NO_OPTION) {
            this.setVisible(true);
        }

}                                      

    private void formWindowClosing(java.awt.event.WindowEvent evt) {                                   
        // TODO add your handling code here:
        this.setVisible(false);
        int result = JOptionPane.showConfirmDialog(null,
                "Wirklich Beenden?", "Wirklich Beenden?", JOptionPane.YES_NO_OPTION);
        if (result == JOptionPane.YES_OPTION) {
            System.exit(0);
        }
        if (result == JOptionPane.NO_OPTION) { // noch nicht fertig
            FeAnmeldung a1 = new FeAnmeldung();
            a1.setVisible(true);
            this.setVisible(true);
            return;


        }
    }                                  

    private void butOkActionPerformed(java.awt.event.ActionEvent evt) {                                      
        login();
    }                                     

    private void butHilfeActionPerformed(java.awt.event.ActionEvent evt) {                                         
       
    }                                        

    private void tfPassActionPerformed(java.awt.event.ActionEvent evt) {
                // TODO add your handling code here:
    }

    private void tfNameFocusGained(java.awt.event.FocusEvent evt) {
        tfName.setSelectionStart(0);
        tfName.setSelectionEnd(tfName.getText().length());        // TODO add your handling code here:
    }

    private void tfPassFocusGained(java.awt.event.FocusEvent evt) {
        tfPass.setSelectionStart(0);
        tfPass.setSelectionEnd(tfPass.getPassword().length);
    }

    /**   
     * @param args the command line arguments
     */
    public static void main(String args[]) {

        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new FeAnmeldung().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify
    private javax.swing.JButton butAbb;
    private javax.swing.JButton butHilfe;
    private javax.swing.JButton butOk;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JTextField tfName;
    private javax.swing.JPasswordField tfPass;
    // End of variables declaration
}
```

Währe hammer wenn ihr mir helfen könntet


----------



## Murray (19. Mrz 2010)

labi hat gesagt.:


> Ich bekomme immer eine Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
> Nullpointer Exception


Zu der Exception gibt es doch bestimmt auch einen Stack-Trace, oder?


----------



## AlexSpritze (19. Mrz 2010)

Die catch-Anweisung in Zeile 41 ist auch deplatziert, wenn sie _nichts_ macht.


----------



## JonnieWalker (19. Mrz 2010)

ja klar sorry:S
hier das ist die Stack-Trace:

run:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at darstellungpflichth.FeAnmeldung.login(FeAnmeldung.java:48)
        at darstellungpflichth.FeAnmeldung.butOkActionPerformed(FeAnmeldung.java:220)
        at darstellungpflichth.FeAnmeldung.access$200(FeAnmeldung.java:21)
        at darstellungpflichth.FeAnmeldung$3.actionPerformed(FeAnmeldung.java:93)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6263)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6028)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)


----------



## SlaterB (19. Mrz 2010)

> at darstellungpflichth.FeAnmeldung.login(FeAnmeldung.java:48)

und dass die Methode login() hier im Forum nur von Zeile 29 bis 46 läuft, ist dir auch aufgefallen?

die Fehlermeldung sagt dir die exakte Zeile, aber mit der Information machst du nichts, du teilst sie nichtmal hier mit,
welche Zeile ist es genau?

dein Code hier ist eh unvollständig, initComponents() gibts nicht 
(was nicht heißen soll dass du jetzt 300 Zeilen Layout posten sollst, schon ganz gut dass das fehlt  )
db wird nirgendwo gesetzt, das Programm ist komplett löchrig, alles mögliche kann null sein,

prüfe das doch selber, die Zeile weißt du, dort die benutzten Objekte anschauen,
spätestens per System.out.println eine Zeile vorher oder Debugger genau klären welches nun null ist
und dann zurückverfolgen, wo soll es gesetzt worden sein, passiert das auch?


----------



## JonnieWalker (19. Mrz 2010)

ich prüf das alles nochmal und dann schau ich mal weiter
danke erstmal


----------



## citizen_erased (19. Mrz 2010)

vermutlich tritt der Fehler hier auf

```
user = db.holeBenutzer(tfName.getText(), passwort);
```

db scheint noch nicht initalisiert und ist deshalb null. Daher könnte die NullPointerException stammen


----------



## citizen_erased (19. Mrz 2010)

citizen_erased hat gesagt.:


> vermutlich tritt der Fehler hier auf
> 
> ```
> user = db.holeBenutzer(tfName.getText(), passwort);
> ...



damn.. hat SlaterB ja bereits scharfsinnig erkannt... 
nun, ich schließe mich dem an


----------



## fastjack (19. Mrz 2010)

Das Passwort aus dem Textfield brauchst Du nicht zeichenweise in einen neuen String kopieren. Eine Zuweisung, wenn überhaupt, 


```
String password = tfPass.getText()
```

reicht aus.


----------



## SlaterB (19. Mrz 2010)

schon ausprobiert?
ich grad auch nicht aber:
Get Password into string from JPasswordField in Java | Purple Indigo


----------



## Gast2 (19. Mrz 2010)

fastjack hat gesagt.:


> Das Passwort aus dem Textfield brauchst Du nicht zeichenweise in einen neuen String kopieren. Eine Zuweisung, wenn überhaupt,
> 
> 
> ```
> ...



sowas sollte man auf keinen Fall machen, außer die Sicherheit ist nicht so wichtig ^^...


----------

