Guten Abend,
vor einigen Tagen wurde mir schon einmal so schön geholfen und bin leider noch einmal auf eure Hilfe angewiesen. Bin gerade dabei für ein Programm den Login zu programmieren und beim drücken auf den Einloggen Button kommt immer eine NE: Weiß jemand, wo da der Fehler liegt?
// Datenbankcode ist irgendwie hier im Forum mit in den GUI Code gerutscht und geht nicht mehr rückggängig. Sorry :/
Programmcode GUI:
vor einigen Tagen wurde mir schon einmal so schön geholfen und bin leider noch einmal auf eure Hilfe angewiesen. Bin gerade dabei für ein Programm den Login zu programmieren und beim drücken auf den Einloggen Button kommt immer eine NE: Weiß jemand, wo da der Fehler liegt?
// Datenbankcode ist irgendwie hier im Forum mit in den GUI Code gerutscht und geht nicht mehr rückggängig. Sorry :/
Java:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at login.database_connection.einloggen(database_connection.java:51)
at login.login_view.actionPerformed(login_view.java:194)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Programmcode GUI:
Java:
package login;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.sql.Connection;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import urlaubsantrag.urlaubsantrag_view;
import util.GuiFormatter;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.JPasswordField;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import java.sql.*;
public class login_view extends JFrame implements ActionListener {
private JPanel contentPane;
private JTextField txt_Benutzername;
private JPasswordField pw_Passwort;
private JLabel lblBenutzername;
private JLabel lblPasswort;
private JButton btnEinloggen;
private JLabel lblOben;
private JLabel lblBild;
private JButton btnHilfe;
private JButton btnAbbrechen;
Connection con = null;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
// damit die View Systemunabhöngig ist.
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
}
try{
new login_view();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public login_view() {
starten();
class Fenster extends WindowAdapter {
public void windowClosing(WindowEvent e) {
schliessen();
}
}
addWindowListener(new Fenster());
}
private void starten() {
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setBounds(100, 100, 554, 366);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
Color c1 = new Color(229,249,248);
contentPane.setBackground(c1);
setTitle("Login");
setVisible(true);
setContentPane(contentPane);
contentPane.setLayout(null);
// View startet in der Mitte des Bildschirms.
setLocationRelativeTo(null);
setResizable(false);
lblBenutzername = new JLabel("Benutzername:");
lblBenutzername.setFont(new Font ("Tahoma", Font.PLAIN, 13));
lblBenutzername.setBounds(42, 138, 103, 14);
getContentPane().add(lblBenutzername);
lblPasswort = new JLabel("Passwort:");
lblPasswort.setFont(new Font ("Tahoma", Font.PLAIN, 13));
lblPasswort.setBounds(42, 181, 79, 14);
getContentPane().add(lblPasswort);
txt_Benutzername = new JTextField();
txt_Benutzername.setBounds(145, 138, 86, 20);
txt_Benutzername.setColumns(10);
txt_Benutzername.setDocument(new SetMaText(9));
txt_Benutzername.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
char c = e.getKeyChar();
if(!((Character.isDigit(c) ||
(c == KeyEvent.VK_BACK_SPACE) ||
(c == KeyEvent.VK_DELETE)))) {
e.consume();
}
}
});
this.getContentPane().add(txt_Benutzername);
pw_Passwort = new JPasswordField();
pw_Passwort.setBounds(145, 181, 86, 20);
this.getContentPane().add(pw_Passwort);
btnEinloggen = new JButton("Einloggen");
btnEinloggen.setBounds(42, 238, 86, 23);
btnEinloggen.addActionListener(this);
this.getContentPane().add(btnEinloggen);
btnAbbrechen = new JButton("Abbrechen");
btnAbbrechen.setBounds(145, 238, 98, 23);
btnAbbrechen.addActionListener(this);
this.getContentPane().add(btnAbbrechen);
lblOben = new JLabel("");
lblOben.setBounds(0, 0, 548, 89);
// durchsichtig setzen, für die Hintergrundfarbe.
lblOben.setOpaque(true);
lblOben.setIcon(new ImageIcon(login_view.class.getResource("/logo.png")));
Color c2 = new Color(0,155,187);
lblOben.setBackground(c2);
getContentPane().add(lblOben);
lblBild = new JLabel("");
lblBild.setBounds(305, 110, 147, 182);
lblBild.setIcon(new ImageIcon(login_view.class.getResource("/login.png")));
getContentPane().add(lblBild);
btnHilfe = new JButton("");
btnHilfe.setBounds(515, 11, 23, 23);
btnHilfe.setIcon(new ImageIcon(login_view.class.getResource("/Hilfe_1.png")));
btnHilfe.setOpaque(true);
btnHilfe.addActionListener(this);
contentPane.add(btnHilfe);
}
// Beim schließen des Programmes prüfen, ob man es wirklich beenden möchte.
public void schliessen(){
if(JOptionPane.showOptionDialog(null, "Willst du wirklich das Programm beenden?","Beenden",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE, null,
new String[]{"Ja", "Nein"}, "Nein") == JOptionPane.YES_OPTION){
System.exit(0);
}
}
public void resetView(){
this.txt_Benutzername.setText("");
this.pw_Passwort.setText("");
}
public void beenden(){
dispose();
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()== btnAbbrechen) {
dispose();
System.exit(0);
}
if(e.getSource() == btnHilfe) {
JOptionPane.showMessageDialog(null, "Bitte geben Sie ihre Mitarbeiter ID und ihr Passwort ein!", "Login", JOptionPane.INFORMATION_MESSAGE);
}
if(e.getSource() == btnEinloggen) {
database_connection.getDBCon();
Mitarbeiter ma = null;
if(txt_Benutzername.getText().equals(""))
JOptionPane.showMessageDialog(null, "Bitte geben sie eine Benutzerkennung ein", "Login", JOptionPane.ERROR_MESSAGE);
else if(pw_Passwort.getText().equals("")){
JOptionPane.showMessageDialog(null, "Bitte geben sie ihr Passwort ein", "Login", JOptionPane.ERROR_MESSAGE);
}else{
ma = database_connection.einloggen(Integer.parseInt(txt_Benutzername.getText()), pw_Passwort.getText());
}
if(ma != null){
dispose();
new urlaubsantrag_view();
}else{
database_connection.closeDBCon();
}
}
}
Datenbank:
[code=Java]package login;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.*;
import javax.swing.*;
import javax.swing.JOptionPane;
import login.Mitarbeiter;
// DB Connection erstellen
public class database_connection {
static String Username = "xxx";
static String Password = "xxx";
static String URL = "jdbc:oracle:thin:@<>";
static Connection con = null;
// Nutzer mit User/Passwort anmelden
public static Connection getDBCon(){
try{
Connection con = DriverManager.getConnection(URL, Username, Password);
con.setAutoCommit(false);
return con;
} catch (SQLException e) {
System.err.println("Fehler bei der Verbindung aufgetreten" + e.getMessage());
e.printStackTrace();
System.exit(0);
}
return null;
}
//Datenbankverbindung schließen
public static void closeDBCon(){
try{
if(con != null)
con.close();
}catch(SQLException sql){
JOptionPane.showMessageDialog(null, "Verbindung konnte nicht hergestellt werden","Fehlermeldung", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
}
public static Mitarbeiter einloggen(int txt_Benutzername, String pw_Password) {
Mitarbeiter ma = new Mitarbeiter(txt_Benutzername, txt_Benutzername, pw_Password, pw_Password, txt_Benutzername, txt_Benutzername, txt_Benutzername, txt_Benutzername, pw_Password, txt_Benutzername, pw_Password, txt_Benutzername, txt_Benutzername, pw_Password, pw_Password);
Statement stmt = null;
ResultSet rs = null;
try {
stmt = con.createStatement();
rs = stmt.executeQuery("SELECT MANR, PASSWORT FROM MITARBEITER WHERE MANR = " + txt_Benutzername);
if(rs.next()) {
if(txt_Benutzername == rs.getInt("MANR") && pw_Password.equals(rs.getString("PASSWORT"))) {
ma.setManr(rs.getInt("MANR"));
ma.setPasswort(rs.getString("PASSWORT"));
String vorgnr = rs.getString("VORGNR");
if(vorgnr == null) {
ma.setVorgnr(0);
} else {
ma.setVorgnr(new Integer(vorgnr));
}
return ma;
} else {
return ma = null;
}
} else {
JOptionPane.showMessageDialog(null, "Falscher Benutzername oder Passwort", "Login", JOptionPane.ERROR_MESSAGE);
}
stmt.close();
rs.close();
}catch(SQLException e){
System.err.println("Fehler login ueberpruefung: "+e.getMessage());
}finally{
try{
if(stmt != null)
stmt.close();
if(rs != null)
rs.close();
}catch(SQLException e){
System.err.println("Fehler finally login ueberpruefung: "+e.getMessage());
}
}
return ma = null;
}
}
}
Zuletzt bearbeitet von einem Moderator: