G
Guest
Gast
Hallo Forum,
ich bin gerade dabei, ein kleines Java-/Datenbankprogramm zu schreiben. Es soll Standardaufgaben wie "INSERT, UPDATE, SELECT, DELETE" verwalten. Leider bin ich an einem Punkt angelangt, wo ich nicht mehr weiter komme.
bisher habe ich folgendes implementiert:
- Datenbank mit 6 Kernentitäten
- Klasse für die Datenbankverbindung sowie SQL-Methoden
- Datencontainer für Arrays bzw. Vectoren
- Klasse für die Attribute einer Person (Name, Vorname, Adresse usw.)
- GUI bzw. Formular zum Hinzufügen von Daten in di DB
Meine IDE zeigt keine Fehler mehr an. Nach ausführen des Programms öffnen sich auch meine GUI/Formular. Nach Eingabe von Daten und letztlich des betätigen des "Übernehmen-Buttons", bekomme ich folgende Fehlerausgabe.
Meine Codes sehen im folgenden so aus:
Datenbankschnittstelle
Datencontainer
Objekte von Personen
GUI
ich bin gerade dabei, ein kleines Java-/Datenbankprogramm zu schreiben. Es soll Standardaufgaben wie "INSERT, UPDATE, SELECT, DELETE" verwalten. Leider bin ich an einem Punkt angelangt, wo ich nicht mehr weiter komme.
bisher habe ich folgendes implementiert:
- Datenbank mit 6 Kernentitäten
- Klasse für die Datenbankverbindung sowie SQL-Methoden
- Datencontainer für Arrays bzw. Vectoren
- Klasse für die Attribute einer Person (Name, Vorname, Adresse usw.)
- GUI bzw. Formular zum Hinzufügen von Daten in di DB
Meine IDE zeigt keine Fehler mehr an. Nach ausführen des Programms öffnen sich auch meine GUI/Formular. Nach Eingabe von Daten und letztlich des betätigen des "Übernehmen-Buttons", bekomme ich folgende Fehlerausgabe.
init:
deps-jar:
compile:
run:
Exception occurred during event dispatching:
java.lang.NullPointerException
at projekt1._dbConnect.insertPerson(_dbConnect.java:74)
at projekt1._main_register_test.addPerson(_main_register_test.java:188)
at projekt1._main_register_test.jButton2ActionPerformed(_main_register_test.java:154)
at projekt1._main_register_test.access$100(_main_register_test.java:13)
at projekt1._main_register_test$2.actionPerformed(_main_register_test.java:56)
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:6041)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5806)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4413)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2440)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:177)
at java.awt.Dialog$1.run(Dialog.java:1045)
at java.awt.Dialog$3.run(Dialog.java:1097)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Dialog.java:1095)
at java.awt.Component.show(Component.java:1422)
at java.awt.Component.setVisible(Component.java:1375)
at java.awt.Window.setVisible(Window.java:806)
at java.awt.Dialog.setVisible(Dialog.java:985)
at projekt1.main_window.main_window_button_registerActionPerformed(main_window.java:152)
at projekt1.main_window.access$400(main_window.java:15)
at projekt1.main_window$5.actionPerformed(main_window.java:83)
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:6041)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5806)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4413)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2440)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
BUILD SUCCESSFUL (total time: 11 minutes 47 seconds)
Meine Codes sehen im folgenden so aus:
Datenbankschnittstelle
Code:
package projekt1;
import java.sql.*; // saemtl. SQL-Klassen
import java.util.*; // saemtl. Hilfsklassen
public class _dbConnect
{
private static _dbConnect dbConnection = null;
private Connection conn = null;
private Statement stmt = null;
private ResultSet res = null;
private String dbUrl = null;
private String dbHost = "127.0.0.1";
private String dbSchema = "java_prog";
private String dbUser = "admin";
private String dbUserPwd = "J00ml4!";
private _dbConnect() {
}
public static _dbConnect getInstanz() {
if (dbConnection == null) {
// Konstruktor kann nur einmal aufgerufen werden
dbConnection = new _dbConnect();
}
return dbConnection;
}
public void removeConnection() {
if (dbConnection != null) {
try {
// this.res.close();
this.stmt.close();
this.conn.close();
_dbConnect.dbConnection = null;
}
catch (SQLException e) {
e.printStackTrace();
}
}
}
public void initConnection(String host, String schema, String user, String pwd) throws Exception {
this.dbHost = host;
this.dbSchema = schema;
this.dbUser = user;
this.dbUserPwd = "";
this.dbUrl = "jdbc:mysql://" + this.dbHost + "/" + this.dbSchema;
// Connector/J Datenbank-Treiber laden
Class.forName("com.mysql.jdbc.Driver").newInstance();
// mit MySQL verbinden
conn = DriverManager.getConnection(dbUrl, dbUser, dbUserPwd);
// MySQL-Statement-Objekt erzeugen
stmt = conn.createStatement();
}
public void insertPerson(_person person) {
String sql;
sql = "INSERT INTO person (vorname, name, telefonnummer, email, adresse) " +
"VALUES ('" +
person.getVorName() + "', '" +
person.getName() + "', '" + person.getTelefon() + "', " +
person.getEmail() + ", " + person.getAdresse() + ");";
try {
stmt.executeUpdate(sql);
res = stmt.executeQuery("SELECT LAST_INSERT_ID() FROM person");
_puffer.getInstance().refreshPerson();
}
catch (SQLException e)
{
e.printStackTrace();
}
}
// Alle Entities Table "Person"
public ArrayList<_person> showAllPersons() {
ArrayList<_person> liste = new ArrayList<_person>();
String sql1 = "SELECT * FROM Person;";
try {
res = stmt.executeQuery(sql1);
while (res.next())
{
_person personAdd = new _person
(
res.getString("vorName"), res.getString("Name"), res.getString("Telefon"),
res.getString("Email"), res.getString("Adresse")
);
liste.add(personAdd);
}
res.close();
}
catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return liste;
}
}
Datencontainer
Code:
package projekt1;
import java.util.*;
public class _puffer extends Observable
{
private static _puffer instance = null;
private ArrayList<_person> person;
//private Vector<Wettbewerb> wettbewerbe;
private _puffer()
{this.init();}
private void init()
{
this.person = new ArrayList<_person>();
}
public static _puffer getInstance() {
if (instance == null) {
instance = new _puffer();
}
return instance;
}
public ArrayList<_person> getPerson()
{
return this.person;
}
public void refreshPerson() {
this.person.clear();
this.person.addAll(_dbConnect.getInstanz().showAllPersons());
this.setChanged();
this.notifyObservers();
}
}
Objekte von Personen
Code:
package projekt1;
public class _person {
private int personID;
private String vorName;
private String Name;
private String Telefon;
private String Email;
private String Adresse;
public _person(String vorName, String Name, String Telefon, String Email, String Adresse) {
this.vorName = vorName;
this.Name = Name;
this.Telefon = Telefon;
this.Email = Email;
this.Adresse = Adresse;
// this.personID = personID;
}
public int getpersonID() {
return personID;
}
public void setpersonID(int personID) {
this.personID = personID;
}
public String getVorName() {
return vorName;
}
public void setVorName(String vorName) {
this.vorName = vorName;
}
public String getName() {
return Name;
}
public void setName(String Name) {
this.Name = Name;
}
public String getTelefon() {
return Telefon;
}
public void setTelefon(String Telefon) {
this.Telefon = Telefon;
}
public String getEmail() {
return Email;
}
public void setEmail(String Email) {
this.Email = Email;
}
public String getAdresse() {
return Adresse;
}
public void setAdresse(String Adresse) {
this.Adresse = Adresse;
}
}
GUI
Code:
/*
* main_register.java
*
* Created on 6. Mai 2008, 18:37
*/
package projekt1;
/**
*
* @author dunz' + weber
*/
public class _main_register_test extends javax.swing.JDialog {
/** Creates new form main_register */
public _main_register_test(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
this.setLocationRelativeTo(null);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
label2 = new java.awt.Label();
label3 = new java.awt.Label();
label1 = new java.awt.Label();
label7 = new java.awt.Label();
label8 = new java.awt.Label();
main_register_street = new javax.swing.JTextField();
main_register_prename = new javax.swing.JTextField();
main_register_name = new javax.swing.JTextField();
main_register_mail = new javax.swing.JTextField();
main_register_phone = new javax.swing.JTextField();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
jButton1.setText("Abbrechen");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton2.setText("Absenden");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
label2.setText("Vorname:");
label3.setText("E-Mail Adresse:");
label1.setText("Name:");
label7.setText("Telefonnummer:");
label8.setText("Straße:");
main_register_mail.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
main_register_mailActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(label7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(406, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addContainerGap()
.addComponent(label8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(136, 136, 136)
.addComponent(main_register_street, javax.swing.GroupLayout.DEFAULT_SIZE, 218, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addGap(35, 35, 35)
.addComponent(jButton2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 203, Short.MAX_VALUE)
.addComponent(jButton1)))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(label2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(label3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(label1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(90, 90, 90)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(main_register_mail, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(main_register_prename, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(main_register_name, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 218, Short.MAX_VALUE)
.addComponent(main_register_phone))))
.addGap(103, 103, 103))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(label1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(main_register_name, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(label2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(main_register_prename, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(label3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(main_register_mail, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(40, 40, 40)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(label7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(main_register_phone, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(label8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(main_register_street, javax.swing.GroupLayout.PREFERRED_SIZE, 19, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(235, 235, 235)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton2)
.addComponent(jButton1))
.addGap(37, 37, 37))
);
pack();
}// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
this.dispose();// TODO add your handling code here:
}
private void main_register_mailActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// Daten holen und in DB schreiben
this.addPerson();
this.clearTxtFelder();
this.dispose();
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
_main_register_test dialog = new _main_register_test(new javax.swing.JFrame(), true);
dialog.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
}
});
dialog.setVisible(true);
}
});
}
// Methoden zum abholen der Daten
private void addPerson(){
String name = main_register_name.getText();
String vorname = main_register_prename.getText();
String email = main_register_mail.getText();
String telefonnummer = main_register_phone.getText();
String adresse = main_register_street.getText();
_person neuePerson = new _person(vorname, name, telefonnummer, email, adresse);
_dbConnect.getInstanz().insertPerson(neuePerson);
}
private void clearTxtFelder() {
main_register_name.setText(null);
main_register_prename.setText(null);
main_register_mail.setText(null);
main_register_phone.setText(null);
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private java.awt.Label label1;
private java.awt.Label label2;
private java.awt.Label label3;
private java.awt.Label label7;
private java.awt.Label label8;
private javax.swing.JTextField main_register_mail;
private javax.swing.JTextField main_register_name;
private javax.swing.JTextField main_register_phone;
private javax.swing.JTextField main_register_prename;
private javax.swing.JTextField main_register_street;
// End of variables declaration
}