Hallo zusammen,
ich bin in Sachen Java ein blutiger Anfänger und habe einfach mal mit einem gesetztem Ziel angefangen in die Materie einzusteigen. VHS-Kurs für Anfänger habe ich auch schon hinter mir
Bei einer Sache komme ich gerade ins stocken. Ziel ist es, bei einem Klick auch einen Button, soll eine Texfeld in eine DB gespeichert werden, so weit alles ok geht auch prima. Der Code für die Buttonaktion habe ich so erstellt:
Ich dachte also, beim Klick auf den Button führe die Aktion "einfuegen" aus - geht auch.
Aber ich hatte den Code für "Einfügen" vorher so geschrieben:
Da ich aber mehrere Buttons erstellen wollte, dachte ich mir, ich müsste für jeden Button eine eigene Methode schreiben, eben wie "einfuegen".
Jedoch wenn ich die Zeilen mit "actionPerformed(ActionEvent ev)" (1-6) lösche und das Programm starte bekomme ich eine Fehlermeldung, lasse ich weiter compilieren läuft das Programm wie gewünscht und ohne ein Fehlerprotokoll. Wo ist der Fehler im Programm?
Der ganze Code:
Ich hoffe ich habe mein Problem verständlich rüberbringen können.
Vielen Dank im voraus.
Admiral
ich bin in Sachen Java ein blutiger Anfänger und habe einfach mal mit einem gesetztem Ziel angefangen in die Materie einzusteigen. VHS-Kurs für Anfänger habe ich auch schon hinter mir
Bei einer Sache komme ich gerade ins stocken. Ziel ist es, bei einem Klick auch einen Button, soll eine Texfeld in eine DB gespeichert werden, so weit alles ok geht auch prima. Der Code für die Buttonaktion habe ich so erstellt:
Code:
public SwingDemo() {
super("Datenbank");
setSize(400, 120);
setLocation(300, 300);
Container contentPane = getContentPane();
contentPane.setLayout(new GridLayout(3, 2));
LabelName = new JLabel("Name");
LabelVorname = new JLabel("Vorname");
LabelNix = new JLabel("");
TextName = new JTextField();
TextVorname = new JTextField();
Button = new JButton("Speichern");
Button.addActionListener(einfuegen);
contentPane.add(LabelName);
contentPane.add(TextName);
contentPane.add(LabelVorname);
contentPane.add(TextVorname);
contentPane.add(LabelNix);
contentPane.add(Button);
}
ActionListener einfuegen = new ActionListener() {
public void actionPerformed(ActionEvent xx) {
String Name = TextName.getText();
try {
Class.forName(DRIVER).newInstance();
Connection connection = DriverManager.getConnection(URL);
Statement statement = connection.createStatement();
ResultSet resultSet = null;
String INSERT = "INSERT INTO formulare2 (name) VALUES('"+Name+"') ";
// statement.execute(CREATE_TABLE);
statement.execute(INSERT);
// statement.execute(DELETE);
resultSet = statement.executeQuery(SELECT);
while (resultSet.next()) {
System.out.println(resultSet.getString("id") + ":"
+ resultSet.getString("name"));
}
resultSet.close();
statement.close();
} catch (Exception ef) {
System.out.println("Fehler?!" + ef);
ef.printStackTrace();
}
}
Ich dachte also, beim Klick auf den Button führe die Aktion "einfuegen" aus - geht auch.
Aber ich hatte den Code für "Einfügen" vorher so geschrieben:
Code:
public void actionPerformed(ActionEvent ev) {
// hier stand vorher die Aktion von: ActionListener einfuegen ....
} // Ende klick auf Button
Jedoch wenn ich die Zeilen mit "actionPerformed(ActionEvent ev)" (1-6) lösche und das Programm starte bekomme ich eine Fehlermeldung, lasse ich weiter compilieren läuft das Programm wie gewünscht und ohne ein Fehlerprotokoll. Wo ist der Fehler im Programm?
Der ganze Code:
Code:
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.*;
import javax.swing.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class SwingDemo extends JFrame implements ActionListener {
static final String DRIVER = "org.apache.derby.jdbc.EmbeddedDriver";
static final String URL = "jdbc:derby:derbydb;create=true";
JLabel LabelName, LabelVorname, LabelNix;
JTextField TextName, TextVorname;
JButton Button;
public SwingDemo() {
super("Datenbank");
setSize(400, 120);
setLocation(300, 300);
Container contentPane = getContentPane();
contentPane.setLayout(new GridLayout(3, 2));
LabelName = new JLabel("Name");
LabelVorname = new JLabel("Vorname");
LabelNix = new JLabel("");
TextName = new JTextField();
TextVorname = new JTextField();
Button = new JButton("Speichern");
Button.addActionListener(einfuegen);
contentPane.add(LabelName);
contentPane.add(TextName);
contentPane.add(LabelVorname);
contentPane.add(TextVorname);
contentPane.add(LabelNix);
contentPane.add(Button);
}
ActionListener einfuegen = new ActionListener() {
public void actionPerformed(ActionEvent xx) {
String Name = TextName.getText();
try {
Class.forName(DRIVER).newInstance();
Connection connection = DriverManager.getConnection(URL);
Statement statement = connection.createStatement();
ResultSet resultSet = null;
String INSERT = "INSERT INTO formulare2 (name) VALUES('"+Name+"') ";
// statement.execute(CREATE_TABLE);
statement.execute(INSERT);
// statement.execute(DELETE);
resultSet = statement.executeQuery(SELECT);
while (resultSet.next()) {
System.out.println(resultSet.getString("id") + ":"
+ resultSet.getString("name"));
}
resultSet.close();
statement.close();
} catch (Exception ef) {
System.out.println("Fehler?!" + ef);
ef.printStackTrace();
}
}
};
public void actionPerformed(ActionEvent ev) {
// hier stand vorher die Aktion von: ActionListener einfuegen ....
} // Ende klick auf Button
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
System.err.println("Couldn't use the system " + "look and feel: "+ e);
}
##
JFrame frame = new SwingDemo();
WindowListener l = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
};
frame.addWindowListener(l);
frame.setVisible(true);
}
}
Ich hoffe ich habe mein Problem verständlich rüberbringen können.
Vielen Dank im voraus.
Admiral