Hallo,
ich stehe mal wieder völlig auf dem Schlauch. Ich weiss gerade nicht was die NullPointerException auslöst.
Die entsprechende Stelle, wo ich die Fehlermeldung bekomme, habe ich mal kurz markiert
ich stehe mal wieder völlig auf dem Schlauch. Ich weiss gerade nicht was die NullPointerException auslöst.
Code:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
public class MyFrame extends JFrame implements ActionListener {
private JPanel tablePanel;
private JButton button1;
private JButton button2;
private JButton button3;
private JButton button4;
private String editForm;
private String editWhere;
private String abfrageK1;
private JTable tabelle;
private JPanel northPanel;
private JPanel centerPanel;
private JLabel labelDB;
private JTextField ausgabefeld1;
private JTextField ausgabefeld2;
private JTextField ausgabefeld3;
private JTextField ausgabefeld4;
private JTextField ausgabefeld5;
private JTextField ausgabefeld6;
private JTextField ausgabefeld7;
private JTextField ausgabefeld8;
private JTextField ausgabefeld9;
private JLabel leerfeld2;
private JLabel leerfeld5;
private JLabel leerfeld6;
private JLabel labelVorname;
private JLabel labelNachname;
private JLabel labelStrasse;
private JLabel labelHausnummer;
private JLabel labelPLZ;
private JLabel labelOrt;
private JLabel labelLand;
private JLabel labelTelefon;
private JLabel labelID;
private ResultSet resultK1;
// MyFrame() starten
public static void main(String args[]) {
MyFrame g = new MyFrame();
}
// actionPerformed: SQL-Anweisung an Button anpassen:
// Auswählen: SELECT * ...
// Bearbeiten: UPDATE ...
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("Kunde auswählen")) //Auswählen-Button
{
editForm = "SELECT * from kunde WHERE ID = '" + ausgabefeld9.getText() + "'";
System.out.println(editForm);
editWhere = "Query";
if (ausgabefeld1.getText().equals("")) {
editForm = editForm;
}
else {
editForm = editForm + "OR vorname LIKE '%" + ausgabefeld1.getText() + "%' ";
System.out.println(editForm);
}
if (ausgabefeld2.getText().equals("")) {
editForm = editForm;
}
else {
editForm = editForm + "OR nachname LIKE '%" + ausgabefeld2.getText() + "%' ";
}
if (ausgabefeld3.getText().equals("")) {
editForm = editForm;
}
else {
editForm = editForm + "OR strasse LIKE '%" + ausgabefeld3.getText() + "%' ";
}
if (ausgabefeld4.getText().equals("")) {
editForm = editForm;
}
else {
editForm = editForm + "OR hausnummer LIKE '%" + ausgabefeld4.getText() + "%' ";
}
if (ausgabefeld5.getText().equals("")) {
editForm = editForm;
}
else {
editForm = editForm + "OR plz LIKE '%" + ausgabefeld5.getText() + "%' ";
}
if (ausgabefeld6.getText().equals("")) {
editForm = editForm;
}
else {
editForm = editForm + "OR ort LIKE '%" + ausgabefeld6.getText() + "%' ";
}
if (ausgabefeld7.getText().equals("")) {
editForm = editForm;
}
else {
editForm = editForm + "OR land LIKE '%" + ausgabefeld7.getText() + "%' ";
}
if (ausgabefeld8.getText().equals("")) {
editForm = editForm;
}
else {
editForm = editForm + "OR telefon LIKE '%" + ausgabefeld8.getText() + "%' ";
}
try {
List<Kunde> kundeList = dbout();
createTable(kundeList);
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
if(e.getActionCommand().equals("Bearbeiten")) //Bearbeiten-Button
{
editForm = "UPDATE kunde SET vorname='" + ausgabefeld1.getText() + "', nachname='" + ausgabefeld2.getText() + "', strasse='" + ausgabefeld3.getText() + "', hausnummer='" + ausgabefeld4.getText() + "', plz='" + ausgabefeld5.getText() + "', ort='" + ausgabefeld6.getText() + "', land='" + ausgabefeld7.getText() + "', telefon='" + ausgabefeld8.getText() + "' WHERE ID='" + ausgabefeld9.getText() + "'";
System.out.println(editForm);
editWhere = "UPDATE";
try {
List<Kunde> kundeList = dbout();
createTable(kundeList);
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
// getConnection:
// Treiber laden
// Connection herstellen
// Return: Connection conn
public Connection getConnection() throws ClassNotFoundException, SQLException {
// Treiber laden
Class.forName("com.mysql.jdbc.Driver");
// Connection herstellen
String dbHost = "jdbc:mysql://192.168.0.51/fabian_autopark";
String dbUser = "root";
String dbPass = "";
Connection conn = DriverManager.getConnection(dbHost, dbUser, dbPass);
return conn;
}
// getResultSetQuery():
// Statement aufbauen
// Select-Anweisung ans ResultSet übergeben
// Return: resulK1;
public ResultSet getResultSetStandard() throws ClassNotFoundException, SQLException {
Connection conn = getConnection();
Statement stmt = conn.createStatement();
abfrageK1 = "SELECT * FROM kunde";
System.out.println(abfrageK1);
ResultSet resultK1 = stmt.executeQuery(abfrageK1);
return resultK1;
}
// getResultSetQuery():
// Statement aufbauen
// Select-Anweisung ans ResultSet übergeben
public ResultSet getResultSetQuery() throws ClassNotFoundException, SQLException {
Connection conn = getConnection();
Statement stmt = conn.createStatement();
if (editForm == null) {
abfrageK1 = "SELECT * FROM kunde WHERE ID = 0";
}
else {
abfrageK1 = editForm;
}
ResultSet resultK1 = stmt.executeQuery(abfrageK1);
return resultK1;
}
// getResultSetUpdate():
// Statement aufbauen
// Update-Anweisung ans ResultSet übergeben
public ResultSet getResultSetUpdate() throws ClassNotFoundException, SQLException {
Connection conn = getConnection();
Statement stmt = conn.createStatement();
if (editForm == null) {
abfrageK1 = "SELECT * FROM kunde WHERE ID = 0";
}
else {
abfrageK1 = editForm;
}
stmt.executeUpdate(abfrageK1);
return resultK1;
}
public List<Kunde> dbout() throws java.sql.SQLException, ClassNotFoundException {
if (editWhere == "Query") {
resultK1 = getResultSetQuery();
}
else if (editWhere == "Update") {
resultK1 = getResultSetUpdate();
}
else {
resultK1 = getResultSetStandard();
}
ArrayList<Kunde> list = new ArrayList<Kunde>();
while(resultK1.next()) {
Kunde k1 = new Kunde();
[u][b][color=red]ausgabefeld2.setText(resultK1.getString("kunde.nachname"));[/color][/b][/u]
k1.setNachname(resultK1.getString("kunde.nachname"));
ausgabefeld1.setText(resultK1.getString("kunde.vorname"));
k1.setVorname(resultK1.getString("kunde.vorname"));
ausgabefeld3.setText(resultK1.getString("kunde.strasse"));
k1.setStrasse(resultK1.getString("kunde.strasse"));
ausgabefeld4.setText(resultK1.getString("kunde.hausnummer"));
k1.setHausnummer(resultK1.getString("kunde.hausnummer"));
ausgabefeld5.setText(resultK1.getString("kunde.plz"));
k1.setPlz(resultK1.getInt("kunde.plz"));
ausgabefeld6.setText(resultK1.getString("kunde.ort"));
k1.setOrt(resultK1.getString("kunde.ort"));
ausgabefeld7.setText(resultK1.getString("kunde.land"));
k1.setLand(resultK1.getString("kunde.land"));
ausgabefeld8.setText(resultK1.getString("kunde.telefon"));
k1.setTelefon(resultK1.getString("kunde.telefon"));
list.add(k1);
}
return list;
}
public void createTable(List<Kunde> kundeList) {
Object[][] table = new Object[kundeList.size()][6];
int i=0;
for (Kunde k1:kundeList) {
Object[] kundeRow = new Object[6];
kundeRow[0] = k1.getVorname();
kundeRow[1] = k1.getNachname();
kundeRow[2] = k1.getStrasse() + " " + k1.getHausnummer();
kundeRow[3] = k1.getPlz() + " " + k1.getOrt();
kundeRow[4] = k1.getLand();
kundeRow[5] = k1.getTelefon();
table[i] = kundeRow;
i++;
}
String[] spaltenNamen = { "Vorname", "Nachname", "Strasse", "Ort", "Land", "Telefon" };
tabelle.setModel(new DefaultTableModel(table, spaltenNamen));
}
// GUI zeichnen
public MyFrame() {
super("Juchu - Ich habe ein Fenster");
try {
setSize(300, 500);
setLocation(300, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(new BorderLayout(5, 5));
List<Kunde> kundeList = dbout();
// Tabelle erzeugen
tabelle = new JTable();
createTable(kundeList);
tabelle.setPreferredScrollableViewportSize(new Dimension(400, 60));
// Panels erzeugen
tablePanel = new JPanel(new GridLayout(2, 1));
northPanel = new JPanel(new GridLayout());
centerPanel = new JPanel(new GridLayout (9,3,2,2));
// Button erzeugen
button1 = new JButton("Hinzufügen");
button2 = new JButton("Entfernen");
button3 = new JButton("Kunde auswählen");
button3.addActionListener(this);
button4 = new JButton("Bearbeiten");
button4.addActionListener(this);
// Leerfeld erzeugen
leerfeld2 = new JLabel(" ");
leerfeld5 = new JLabel(" ");
leerfeld6 = new JLabel(" ");
labelDB = new JLabel("Datenbankabfrage");
labelVorname = new JLabel("Vorname");
labelNachname = new JLabel("Nachname");
labelStrasse = new JLabel("Strasse");
labelHausnummer = new JLabel("Hausnummer");
labelPLZ = new JLabel("PLZ");
labelOrt = new JLabel("Ort");
labelLand = new JLabel("Land");
labelTelefon = new JLabel("Telefon");
labelID = new JLabel("ID");
// Textfelder erzeugen
ausgabefeld1 = new JTextField("");
ausgabefeld2 = new JTextField("");
ausgabefeld3 = new JTextField("");
ausgabefeld4 = new JTextField("");
ausgabefeld5 = new JTextField("");
ausgabefeld6 = new JTextField("");
ausgabefeld7 = new JTextField("");
ausgabefeld8 = new JTextField("");
ausgabefeld9 = new JTextField("");
// auf Panel Button packen
tablePanel.add(tabelle.getTableHeader());
tablePanel.add(tabelle);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(450, 150);
Container cp = getContentPane();
cp.setLayout(new BorderLayout());
cp.add(northPanel, BorderLayout.NORTH);
cp.add(centerPanel, BorderLayout.CENTER);
labelDB.setHorizontalAlignment(SwingConstants.CENTER);
northPanel.add(labelDB);
centerPanel.add (labelVorname);
labelVorname.setHorizontalAlignment(SwingConstants.RIGHT);
centerPanel.add (ausgabefeld1);
ausgabefeld1.setHorizontalAlignment(SwingConstants.LEFT);
centerPanel.add (button1);
button1.setHorizontalAlignment(SwingConstants.CENTER);
centerPanel.add (labelNachname);
labelNachname.setHorizontalAlignment(SwingConstants.RIGHT);
centerPanel.add (ausgabefeld2);
ausgabefeld2.setHorizontalAlignment(SwingConstants.LEFT);
centerPanel.add (button2);
button2.setHorizontalAlignment(SwingConstants.CENTER);
centerPanel.add (labelStrasse);
labelStrasse.setHorizontalAlignment(SwingConstants.RIGHT);
centerPanel.add (ausgabefeld3);
ausgabefeld3.setHorizontalAlignment(SwingConstants.LEFT);
centerPanel.add (button3);
button3.setHorizontalAlignment(SwingConstants.CENTER);
centerPanel.add (labelHausnummer);
labelHausnummer.setHorizontalAlignment(SwingConstants.RIGHT);
centerPanel.add (ausgabefeld4);
ausgabefeld4.setHorizontalAlignment(SwingConstants.LEFT);
centerPanel.add (button4);
button4.setHorizontalAlignment(SwingConstants.CENTER);
centerPanel.add (labelPLZ);
labelPLZ.setHorizontalAlignment(SwingConstants.RIGHT);
centerPanel.add (ausgabefeld5);
ausgabefeld5.setHorizontalAlignment(SwingConstants.LEFT);
centerPanel.add (leerfeld2);
centerPanel.add (labelOrt);
labelOrt.setHorizontalAlignment(SwingConstants.RIGHT);
centerPanel.add (ausgabefeld6);
ausgabefeld6.setHorizontalAlignment(SwingConstants.LEFT);
centerPanel.add (labelID);
labelID.setHorizontalAlignment(SwingConstants.LEFT);
centerPanel.add (labelLand);
labelLand.setHorizontalAlignment(SwingConstants.RIGHT);
centerPanel.add (ausgabefeld7);
ausgabefeld7.setHorizontalAlignment(SwingConstants.LEFT);
centerPanel.add (ausgabefeld9);
ausgabefeld9.setHorizontalAlignment(SwingConstants.LEFT);
centerPanel.add (labelTelefon);
labelTelefon.setHorizontalAlignment(SwingConstants.RIGHT);
centerPanel.add (ausgabefeld8);
ausgabefeld8.setHorizontalAlignment(SwingConstants.LEFT);
centerPanel.add (leerfeld5);
centerPanel.add (leerfeld6);
cp.add (tablePanel, BorderLayout.SOUTH);
pack();
setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Die entsprechende Stelle, wo ich die Fehlermeldung bekomme, habe ich mal kurz markiert