DBAnbindung mit Mahnungsdruckfunktion GUI

bigfredder

Mitglied
Hallo zusammen,

ich hab ein Problem mit meinem Programm:-( ich brauch das für die Schule.
Ich muss ein Programm schreiben, dass eine Acces Datenbankanbindung hat mit einer Grafischen Oberfläche.
Das Programm sollte eine Art Bibliothek sein. Also man kann sich hier zum beispiel bücher leihen.
Dann soll sich der nutzer auch anmelden können! dann sollte auch die funktion mit integriert sein, dass wenn einer die frist von 10 wochen überschreitet eine mahnung ausgedruckt werden soll oder wenigstens irgendwie angezeigt werden soll!
bei mir funktioniert das Grundgerüst nicht einmal!:-(
Jetzt bekomme ich immer irgendwelche fehlermeldungen. geht also nicht einmal auf das fenster!
Hab das mit eclipse gemacht! Unten meine Klassen!
Wäre toll wenn mir jemand helfen kann! Gibt halt ne Note und mit Java hab ichs garnicht:)

Meine Datenbankanbindung:
Java:
package paket_SEA;


import java.sql.*;

public class DBAnbindung {

	
	Connection dbVerbindung = null;
	Statement sqlAnweisung = null;
	String sqlString = "SELECT * FROM Kunde;";
	String sqlString2;
	ResultSet ergebnis = null;
	String dateiname;
	String datenbank;
	Kunde aktuellerKU;
	

	public DBAnbindung() {
		// default
	}
	
	public DBAnbindung(Kunde pKU) {
		aktuellerKU = pKU;
	}

	

	public void oeffneDB()  {
		
		try {
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		}
		catch (ClassNotFoundException e) {
			System.err.println("Kein Treiber gefunden ...");
			return;
		}

		
		try {
			
			dateiname = "C:/Benutzer/User/Desktop/Kunde.mdb";
			datenbank = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + dateiname;
			
			dbVerbindung = DriverManager.getConnection(datenbank,"","");		
			System.out.println("DB-Verbindung erfolgreich hergestellt ...");
		}
		catch (Exception e2) {
			System.out.println("Fehler beim Verbindungsaufbau! Keine Verbindung!");
			e2.printStackTrace();
		}
	}


	public ResultSet abfrageSenden() {
		try {
			sqlAnweisung = dbVerbindung.createStatement();
			ergebnis = sqlAnweisung.executeQuery(sqlString);
			
		}
		catch (SQLException e) {
			System.out.println("Fehler beim DB-Zugriff!   " + e);
			System.exit(0);
		}
		return ergebnis;
	}

	public void aenderungSenden(Kunde aktuellerKU) {
		try {
			sqlString2 = "INSERT INTO Kunde VALUES ('" + aktuellerKU.getId() + "', '" + aktuellerKU.getName() + "', '"
							+ aktuellerKU.getVorname() + "', " + aktuellerKU.getLeihdatum() + ");";
			sqlAnweisung = dbVerbindung.createStatement();
			sqlAnweisung.executeUpdate(sqlString2);
		}
		catch(SQLException err)   {
			System.err.println(err);

		}
	}

	public void schliesseDB()
	{
		try
		{
			sqlAnweisung.close();
			System.out.println("sqlAnweisung-Objekt vernichtet");
			dbVerbindung.close();
			System.out.println("DB-Verbindung geschlossen !");
		}
		catch (SQLException err)   {
			System.err.println(err);
		}
	}

}

Meine Klasse Kunde:
Java:
package paket_SEA;

public class Kunde {
	// Attribute
	String id;
	String name;
	String vorname;
	int leihdatum;
	
	// Konstruktoren
	public Kunde() {
		// default
	}
	
	public Kunde(String pId, String pName, String pVorname, int pLeihdatum) {
		id = pId;
		name = pName;
		vorname = pVorname;
		leihdatum = pLeihdatum;
	}
	
	// Methoden
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getVorname() {
		return vorname;
	}
	public void setVorname(String vorname) {
		this.vorname = vorname;
	}
	public int getLeihdatum() {
		return leihdatum;
	}
	public void setLeihdatum(int leihdatum) {
		this.leihdatum = leihdatum;
	}
}

Meine Klasse Hauptfenster:
Java:
package paket_SEA;

import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.Rectangle;
import javax.swing.JButton;
import javax.swing.JTextField;
import java.awt.List;
import java.sql.ResultSet;
import java.awt.Dimension;

public class Hauptfenster extends JFrame {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JButton btNeu = null;
	private JLabel jLabel = null;
	private JLabel jLabel1 = null;
	private JLabel jLabel2 = null;
	private JLabel jLabel3 = null;
	private JTextField tfName = null;
	private JTextField tfVorname = null;
	private JTextField tfLeihdatum = null;
	private JButton btSpeichern = null;
	private JButton btEnde = null;
	private List listKU = null;
	private JButton btAnzeigen = null;
	private JLabel KundenID = null;
	private JTextField tfKundenID = null;
	
	// NEU NEU NEU NEU NEU NEU NEU NEU
	Kunde ku = new Kunde();
	DBAnbindung dba = new DBAnbindung(ku);
	private JLabel PersönlicheDaten = null;  
	
	/**
	 * This is the default constructor
	 */
	public Hauptfenster() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(458, 358);
		this.setContentPane(getJContentPane());
		this.setTitle("Bibliotheks-Verwaltung");
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			PersönlicheDaten = new JLabel();
			PersönlicheDaten.setBounds(new Rectangle(15, 14, 118, 36));
			PersönlicheDaten.setText("Persönliche Daten");
			KundenID = new JLabel();
			KundenID.setBounds(new Rectangle(16, 61, 64, 26));
			KundenID.setText("KundenID");
			jLabel2.setText("Aktuelle Kunde");
			jLabel2 = new JLabel();
			jLabel2.setBounds(new Rectangle(15, 159, 63, 24));
			jLabel2.setText("Letztes Leihdatum:");
			jLabel1 = new JLabel();
			jLabel1.setBounds(new Rectangle(15, 126, 64, 27));
			jLabel1.setText("Vorname:");
			jLabel = new JLabel();
			jLabel.setBounds(new Rectangle(16, 96, 61, 25));
			jLabel.setText("Name:");
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(PersönlicheDaten, null);
			jContentPane.add(getBtNeu(), null);
			jContentPane.add(getBtSpeichern(), null);
			jContentPane.add(getBtEnde(), null);
			jContentPane.add(getBtAnzeigen(), null);
			jContentPane.add(KundenID, null);
			jContentPane.add(jLabel, null);
			jContentPane.add(jLabel1, null);
			jContentPane.add(jLabel2, null);
			jContentPane.add(getTfKundenID(), null);
			jContentPane.add(getTfVorname(), null);
			jContentPane.add(getTfName(), null);
			jContentPane.add(getTfLeihdatum(), null);
			jContentPane.add(jLabel3, null);
			jContentPane.add(getListKU(), null);
			jContentPane.add(getTfKundenID(), null);

		}
		return jContentPane;
	}

	
	private JButton getBtNeu() {
		if (btNeu == null) {
			btNeu = new JButton();
			btNeu.setBounds(new Rectangle(17, 220, 59, 34));
			btNeu.setText("NEU");
			btNeu.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("Neu gedrückt"); 
					tfKundenID.setText("");
					tfName.setText("");
					tfVorname.setText("");
					tfLeihdatum.setText("");
					listKU.clear();
				}
			});
		}
		return btNeu;
	}
	private JTextField getTfKundenID() {
		if (tfKundenID == null) {
			tfKundenID = new JTextField();
			tfKundenID.setBounds(new Rectangle(84, 62, 93, 25));
			tfKundenID.setText("tfKundenID");
		}
		return tfKundenID;
	}
	
	private JTextField getTfName() {
		if (tfName == null) {
			tfName = new JTextField();
			tfName.setBounds(new Rectangle(83, 96, 94, 27));
			tfName.setText("tfName");
		}
		return tfName;
	}


	private JTextField getTfVorname() {
		if (tfVorname == null) {
			tfVorname = new JTextField();
			tfVorname.setBounds(new Rectangle(82, 127, 96, 26));
			tfVorname.setText("tfVorname");
		}
		return tfVorname;
	}

	
	private JTextField getTfLeihdatum() {
		if (tfLeihdatum == null) {
			tfLeihdatum = new JTextField();
			tfLeihdatum.setBounds(new Rectangle(81, 159, 96, 25));
			tfLeihdatum.setText("tfLeihdatum");
		}
		return tfLeihdatum;
	}

	
	private JButton getBtSpeichern() {
		if (btSpeichern == null) {
			btSpeichern = new JButton();
			btSpeichern.setBounds(new Rectangle(80, 221, 97, 34));
			btSpeichern.setText("Speichern");
			btSpeichern.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("Speichern gedrückt"); 
					// Daten einlesen
					ku.setId(tfKundenID.getText());
					ku.setName(tfName.getText());
					ku.setVorname(tfVorname.getText());
					ku.setLeihdatum(Integer.parseInt(tfLeihdatum.getText()));
					// Daten übermitteln
					dba.oeffneDB();
					dba.aenderungSenden(ku);
					dba.schliesseDB();
				}
			});
		}
		return btSpeichern;
	}

	
	private JButton getBtEnde() {
		if (btEnde == null) {
			btEnde = new JButton();
			btEnde.setBounds(new Rectangle(17, 262, 161, 30));
			btEnde.setText("Ende");
			btEnde.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("Ende gedrückt"); 
					System.exit(0);
				}
			});
		}
		return btEnde;
	}


	private List getListKU() {
		if (listKU == null) {
			listKU = new List();
			listKU.setBounds(new Rectangle(213, 57, 192, 190));
		}
		return listKU;
	}

	private JButton getBtAnzeigen() {
		if (btAnzeigen == null) {
			btAnzeigen = new JButton();
			btAnzeigen.setBounds(new Rectangle(250, 260, 124, 31));
			btAnzeigen.setText("Anzeigen");
			btAnzeigen.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("Anzeigen gedrückt"); 
					ResultSet erg;
					try {
						listKU.clear();
						dba.oeffneDB();
						erg = dba.abfrageSenden();
						while(erg.next())
							listKU.add(erg.getString(1) + ", " + erg.getString(2) + ", " +erg.getString(3));
						erg.close();
						}
						catch(Exception ex) {
							System.out.println("Fehler beim DB-Zugriff!   " + e);
							System.exit(0);;
						}
						dba.schliesseDB();
				}
			});
		}
		return btAnzeigen;
	}

}

Meine Startklasse:
Java:
package paket_SEA;

import paket_SEA.Hauptfenster;

public class Startklasse {
	public static void main(String[] args) {
		Hauptfenster h1 = new Hauptfenster();
		h1.setVisible(true);
	}
}
 
Zuletzt bearbeitet:

bigfredder

Mitglied
IWAV0052E Invocation Target Exception creating paket_SEA.Hauptfenster
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.eclipse.ve.internal.java.vce.launcher.remotevm.JFCLauncher$1.run(JFCLauncher.java:59)
at java.awt.event.InvocationEvent.dispatch(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)
Caused by: java.lang.NullPointerException
at paket_SEA.Hauptfenster.getJContentPane(Hauptfenster.java:69)
at paket_SEA.Hauptfenster.initialize(Hauptfenster.java:52)
at paket_SEA.Hauptfenster.<init>(Hauptfenster.java:42)
... 13 more
Und bei meiner Startklasse:

Exception in thread "main" java.lang.NullPointerException
at paket_SEA.Hauptfenster.getJContentPane(Hauptfenster.java:69)
at paket_SEA.Hauptfenster.initialize(Hauptfenster.java:52)
at paket_SEA.Hauptfenster.<init>(Hauptfenster.java:42)
at paket_SEA.Startklasse.main(Startklasse.java:7)
 

Firestorm87

Bekanntes Mitglied
Versuch einfach mal das ganze mit dem Debugger zu starten und setze ein "Java-Exception-Breakpoint" (Über das Menü Run => Add Java....)
Und da wählst du "Nullpointer-Ecxeption" aus...

Dann einfach mal gucken wo es knallt und anhand des Ablaufs kann man dann wunderbar sehen wo er bei welchem Zugriff hängen bleibt...
 

eRaaaa

Top Contributor
Ohne den Thread verfolgt zu haben: du rufst erst setText auf, danach erstellst du erst die Instanz des JLabels :D tausche mal die Zeilen (69 und 70)! ;D (könnte helfen)
 

Firestorm87

Bekanntes Mitglied
Wie im Vorpost beschrieben...
Java:
jLabel2.setText("Aktuelle Kunde");
jLabel2 = new JLabel();
hier sollte das Problem liegen....
 

bigfredder

Mitglied
Ja das mit dem drehen hat geklappt! aber da kommen immernoch fehler! könnt ihr das nicht in eclipse kopieren und dann schauen was da falsch ist?
 

Firestorm87

Bekanntes Mitglied
Dann bist du auch kein deut schlauer :)

Das ist "leider" ein elementarer Teil der Programmierung.... "Fehlersuche" :)

Aber wenn du bei einem Fehler wirklich nicht weiter weißt, dann immer her damit... aber nur dann lernst du auch was draus...

/EDIT: Der "Trick" für den Nullpointer funktioniert natürlich auch mit anderen Exceptions :)
 

Firestorm87

Bekanntes Mitglied
Java:
this.jContentPane.add(this.jLabel3, null);
jLabel3 = null, da nie gesetzt....

Und dann geht zumindest dein Fenster auf :)
 

Firestorm87

Bekanntes Mitglied
jLabel3 wird einfach nirgens instanziiert....
Wenn du irgendwo vorher "jLabel3 = new JLabel();", dann kannst du dein Fenster auch öffnen...

Aber wenn du wirklich so wenig mit diesen Sachen anfangen kannst, dann ist sicher die Nachfrage gestattet, ob du den Rest wirklich geschrieben hast?!?
 

bigfredder

Mitglied
Naja das hab ich ja nie behauptet:)
aber das ist ja mein problem! ich versteh es nicht und muss es können! deswegen hab ich das auch hier eingestellt:-(
 

eRaaaa

Top Contributor
Was soll man dir denn noch sagen? Mehr als daß du Zeile 69 mit 70 tauschen sollst, und vor Zeile 94 eine neue einfügst mit [c]jLabel3 = new JLabel();[/c] kann man doch nicht.

Wofür jetzt jLabel3 genau gut sein soll, solltest ja eig. du wissen :D
 

Neue Themen


Oben