# MySQL Tabelle immer leer



## Zuckschwerdt (21. Mrz 2008)

Hallo zusammen

Ich habe folgendes Problem: Ich möchte aus einem Formular, welches aus JTextFields besteht, Daten in eine MySQL Datenbank schreiben. Nach Verbindung zur Datenbank wird auch eine entsprechende Zeile in der Tabelle erzeugt, allerdings wird da nichts reingeschrieben. Ich habe keine Ahnung mehr an was es liegen könnte. Hier mal der Code der betreffenden Klasse:


```
package gui;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;

import javax.swing.*;

/**
 * 
 * @author Lars.Zuckschwerdt
 * Erzeug einen Frame um ein neues Mitglied anzulegen. 
 * Die Daten werden in die Datenbank eingepflegt.
 * 
 */
public class MitgliederFrame extends JFrame{
	private static final long serialVersionUID = 4677755944143196477L;
	
	//Deklaration Klassenvariablen
	static Connection con = null;
	static ResultSet rs;
	static Statement stm;
	Load neu;
	
	String new_name;
	String new_vorname;
	String new_strasse;
	String new_plz;
	String new_stadt;
	String new_geb;
	String new_tel_priv;
	String new_tel_gesch;
	String new_fax;
	String new_mobil;
	String new_email;
	
	JFrame mitglied2 = new JFrame("Neues Mitglied anlegen");
	
	public MitgliederFrame(){
		//Deklaration HauptFrame
		mitglied2.getContentPane();//.setBackground(Color.RED);
		mitglied2.setLayout(new GridLayout(0,2));
		mitglied2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		JButton speichern = new JButton("Speichern");
		speichern.setName("Speichern");
		JButton close = new JButton("Abbrechen");
		close.setName("Close");
		mitglied2.setAlwaysOnTop(true);
		mitglied2.setVisible(true);
		mitglied2.setSize(550,450);
		mitglied2.setLocation(200, 100);
		mitglied2.setResizable(false);
		
		//Bauen der einzelnen Bestandteile
		JLabel name = new JLabel("Nachname:", JLabel.CENTER);
		JTextField name2 = new JTextField("");
		new_name = name2.getText();
	
		JLabel vorname = new JLabel("Vorname: ", JLabel.CENTER);
		JTextField vorname2 = new JTextField("");
		new_vorname = vorname2.getText();
		
		JLabel strasse = new JLabel("Strasse: ", JLabel.CENTER);
		JTextField strasse2 = new JTextField("");
		new_strasse = strasse2.getText();
		
		JLabel postleitzahl = new JLabel("Postleitzahl: ",JLabel.CENTER);
		JTextField plz = new JTextField("");
		new_plz = plz.getText();
		
		JLabel stadt = new JLabel("Stadt: ", JLabel.CENTER);
		JTextField stadt2 = new JTextField("");
		new_stadt = stadt2.getText();
		
		JLabel geb = new JLabel("Geburtsdatum: ",JLabel.CENTER);
		JTextField geb2 = new JTextField("");
		new_geb = geb2.getText();
		
		JLabel tel_priv = new JLabel("Telefon (privat)", JLabel.CENTER);
		JTextField tel_priv2 = new JTextField("");
		new_tel_priv = tel_priv2.getText();
		
		JLabel tel_gesch = new JLabel("Telefon (geschäftlich)", JLabel.CENTER);
		JTextField tel_gesch2 = new JTextField("");
		new_tel_gesch = tel_gesch2.getText();
		
		JLabel fax = new JLabel("Fax: ", JLabel.CENTER);
		JTextField fax2 = new JTextField("");
		new_fax = fax2.getText();
		
		JLabel mobil = new JLabel("Mobil: ", JLabel.CENTER);
		JTextField mobil2 = new JTextField("");
		new_mobil = mobil2.getText();
		
		JLabel email = new JLabel("E-Mail: ",JLabel.CENTER);
		JTextField email2 = new JTextField("");
		new_email = email2.getText();
		
		JLabel dienstgrad = new JLabel("Dienstgrad: ", JLabel.CENTER);
		JTextField dienstgrad2 = new JTextField("");
		
		//Hinzufügen der Felder in Frame
		mitglied2.add(name, BorderLayout.CENTER);
		mitglied2.add(name2, BorderLayout.CENTER);
		mitglied2.add(vorname, BorderLayout.CENTER);
		mitglied2.add(vorname2, BorderLayout.CENTER);
		mitglied2.add(strasse, BorderLayout.CENTER);
		mitglied2.add(strasse2, BorderLayout.CENTER);
		mitglied2.add(postleitzahl, BorderLayout.CENTER);
		mitglied2.add(plz, BorderLayout.CENTER);
		mitglied2.add(stadt, BorderLayout.CENTER);
		mitglied2.add(stadt2, BorderLayout.CENTER);
		mitglied2.add(geb, BorderLayout.CENTER);
		mitglied2.add(geb2, BorderLayout.CENTER);
		mitglied2.add(tel_priv, BorderLayout.CENTER);
		mitglied2.add(tel_priv2, BorderLayout.CENTER);
		mitglied2.add(tel_gesch, BorderLayout.CENTER);
		mitglied2.add(tel_gesch2, BorderLayout.CENTER);
		mitglied2.add(fax, BorderLayout.CENTER);
		mitglied2.add(fax2, BorderLayout.CENTER);
		mitglied2.add(email, BorderLayout.CENTER);
		mitglied2.add(email2, BorderLayout.CENTER);
		mitglied2.add(mobil, BorderLayout.CENTER);
		mitglied2.add(mobil2, BorderLayout.CENTER);
		mitglied2.add(dienstgrad, BorderLayout.CENTER);
		mitglied2.add(dienstgrad2, BorderLayout.CENTER);
		
		//Speichern Button Deklaration und ActionListener
		mitglied2.add(speichern, BorderLayout.SOUTH);
		
		ButtonListener al = new ButtonListener();
		speichern.addActionListener(al);
		
		
		//Close Button Deklaration und ActionListener
		mitglied2.add(close, BorderLayout.SOUTH);
		
		ButtonListener2 bl = new ButtonListener2();
		close.addActionListener(bl);
	}
	class ButtonListener implements ActionListener{
		public void actionPerformed(ActionEvent e) { 
			db(); 
	    } 
	}
	class ButtonListener2 implements ActionListener{
		public void actionPerformed(ActionEvent e){
			if (e.getSource() instanceof JButton) { 
		         JButton temp = (JButton) e.getSource(); 
		         if (temp.getName().equals("Close")) { 
		        	 mitglied2.dispose(); 
		         } 
		      }
		}
	}
	
	//Methode zum schreiben in Datenbank
	public void db(){

		try {
			Class.forName( "com.mysql.jdbc.Driver" );
			System.out.println("Treiber wurden geladen!");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} 
		try {
			con = DriverManager.getConnection( "jdbc:mysql://localhost/Feuerwehr", "benutzer", "password" );
			System.out.println("Datenbankverbindung steht!");
		} catch (SQLException e2) {
			e2.printStackTrace();
			System.out.println("Es besteht keine Datenbankverbindung!");
		}
		//Schreiben in Tabelle
		try {
			stm = con.createStatement();
		} catch (SQLException e2) {
			e2.printStackTrace();
		}
		try {
			ResultSet rSet; 
			String insertQuery = "INSERT INTO mitglied name,vorname,strasse,plz,stadt,geb,tel_priv,
tel_gesch,fax,email,mobil) 
VALUES ('"+ new_name +"','" + new_vorname + "','"+ new_strasse +"','"+ 
new_plz +"','"+ new_stadt +"','"+ new_geb +"','"+ new_tel_priv +"','"+ new_tel_gesch +"','"+
 new_fax +"','"+ new_email +"','"+ new_mobil +"')"; 
			stm.executeUpdate(insertQuery); 
			System.out.println(""); 
			System.out.println("---Eintrag---"); 
			System.out.println(""); 
			String sqlQuery = "SELECT Name,Vorname  FROM mitglied"; 
			rSet = stm.executeQuery( sqlQuery ); 
		while ( rSet.next() ) 
		   System.out.println ( rSet.getString(1) + " \n " + rSet.getString(2) + "Punkt(e) \n" ); 
		} 
		catch (SQLException e) {
		e.printStackTrace();
		}
		try {
			stm.executeBatch();
		} 
		catch (SQLException e1) {
			e1.printStackTrace();
		}

		//Beendung von Datenbankverbingung
		if(con != null){
		try {
			con.close();
			System.out.println("Datenbankverbindung wurde beendet!");
		} 
		catch (SQLException e1) {
			e1.printStackTrace();
		} 
		}
	}
}
```

Die Ausgabe auf dem KonsolenFenster sieht wie folgt aus:

Treiber wurden geladen!
Datenbankverbindung steht!

---Eintrag---


 Punkt(e) 

Datenbankverbindung wurde beendet!


Ich weiß, dass alles als String deklariert ist, das ist erstmal auch richtig so... ich habe nämlich keine Ahnung wie ich z.B. ein Geburtsdatum in eine DB bekomme   

Danke für die Hilfe... Grüße
Lars[/code]


----------



## semi (22. Mrz 2008)

Wo werden die Daten überhaupt ausgelesen. Ich meine aus den Textfeldern?
Bei dem hier doch nicht. Du hast überall leere Strings und das ganze passiert im Konstruktor.
	
	
	
	





```
JLabel name = new JLabel("Nachname:", JLabel.CENTER); 
JTextField name2 = new JTextField(""); 
new_name = name2.getText();
```


----------



## Zuckschwerdt (22. Mrz 2008)

ok... ich mein, ich muss ja im Konstruktor die JTextFields erzeugen, oder lieg ich da falsch? und wo les ich die dann korrekt aus? in einer main?


----------



## semi (23. Mrz 2008)

Vergiss die Datenbank um erstelle zuerst mal eine funktionierende Benutzeroberfläche.


----------



## Zuckschwerdt (23. Mrz 2008)

ok, dann werd ich mich wohl nochmal an die Benutzeroberfläche machen... danke dir trotzdem... wenn du mir jetzt noch nen kleinen tipp geben würdest, wie ich das ganze etwas eleganter lösen könnte, wäre ich dir noch viel dankbarer


----------



## Guest (23. Mrz 2008)

Schau dir das Beispiel hier an 
http://www.java-forum.org/de/viewtopic.php?t=65520&start=30

Die Vorgehensweise ist ähnlich. Zuerst eine Klasse Mitglied, dann die passenden Interfaces zum Lesen und 
Schreiben, eine Implementierung der Interfacces zum Test, die GUI usw. Lese auch wie man PreparedStatement 
verwendet und JUnit-Tests schreibt. (Beispiele findest du auch hier im Forum) 

Gruß,
semi


----------

