Hallo zusammen
Habe seit kurzem mit Java angefangen. Nun wollte ich eine GUI schreiben die sich mit einer MySQL Datenbank verbindet. Soweit eigentlich kein Problem, jedoch sobald ich mich verbinden will bekomme ich die Fehlermeldung NullPointerException
. Könnte mir jemand helfen und mir mitteilen wo mein Fehler liegt?
Mein Programm besteht aus 3 Klassen:
main - Klasse
DB connector Klasse
Frame Klasse
Besten Dank für Eure hilfe.
Gruss
Savvo
Habe seit kurzem mit Java angefangen. Nun wollte ich eine GUI schreiben die sich mit einer MySQL Datenbank verbindet. Soweit eigentlich kein Problem, jedoch sobald ich mich verbinden will bekomme ich die Fehlermeldung NullPointerException

Mein Programm besteht aus 3 Klassen:
main - Klasse
Code:
import javax.swing.*;
public class SalRosso implements Runnable{
private Frame p_window;
public static void main( String[] args ) {
SwingUtilities.invokeLater(new SalRosso());
}
public void run() {
this.p_window = new Frame();
p_window.build();
}
}
DB connector Klasse
Code:
import java.sql.*;
public class Connector {
private Frame p_frame;
private Connection con;
public Connector(Frame p_frame) {
this.p_frame = p_frame;
}
public void connect() {
try {
if(!(p_frame.database().equals(""))) {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost/"
+ p_frame.database(), p_frame.username(), p_frame.password());
p_frame.info();
}
else {
p_frame.dbWrong();
}
}
catch (Exception ex) {
p_frame.conTrouble();
}
}
public void disconnect() {
try {
con.close();
}
catch (Exception ex) {
p_frame.dbNoDisc();
}
}
}
Frame Klasse
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.SQLException;
public class Frame {
private Connector p_conn;
private JTabbedPane tab = new JTabbedPane();
private JPanel mainPanel = new JPanel();
private JButton connect = new JButton("Connect");
private JButton close = new JButton("Close");
private JTextField uname = new JTextField();
private JTextField db = new JTextField();
private JPasswordField pw = new JPasswordField();
public void build() {
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame window = new JFrame("DB Tool");
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JMenuBar menuBar = new JMenuBar();
menuBar.add(new JMenu("File")).add(new JMenuItem("Close"));
window.setJMenuBar(menuBar);
Container pane = window.getContentPane();
pane.add(tab);
mainPanel.setLayout( new GridLayout(4,2));
((JComponent) mainPanel).setBorder(BorderFactory.createEmptyBorder(30,30,30,30));
mainPanel.add(new JLabel("Database: "));
mainPanel.add(db);
mainPanel.add(new JLabel("Username: "));
mainPanel.add(uname);
mainPanel.add(new JLabel("Password: "));
mainPanel.add(pw);
mainPanel.add(connect);
mainPanel.add(close);
tab.addTab("Connection", mainPanel);
window.pack();
window.setVisible(true);
connect.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
p_conn.connect();
}
});
close.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
}
/*
* Messages
*/
public void dbWrong() {
JOptionPane.showMessageDialog(null, "Please enter a valid database name");
}
public void conTrouble() {
JOptionPane.showMessageDialog(null, "Please check your data");
}
public void info() {
JOptionPane.showMessageDialog(null, "You are connected with \""
+ database() + "\" as user \"" + username() + "\"");
}
public void dbNoDisc() {
JOptionPane.showMessageDialog(null, "Cannot close connection to database");
}
/*
* get Strings
*/
public String database() {
return db.getText().toString();
}
public String username() {
return uname.getText().toString();
}
public String password() {
return pw.getText().toString();
}
}
Besten Dank für Eure hilfe.
Gruss
Savvo