Hallo zusammen,
ich möchte beim einfügen von Daten in eine Datenbank meine Tabelle aktualisieren.
Das einfügen und auslesen funktioniert, nur wird erst nach einem Programmneustart der neue Wert in die Tabelle geschrieben. Wie kann ich der Tabelle mitteilen, das sich Daten in der DB geändert haben.
Hier die Codes:
ich möchte beim einfügen von Daten in eine Datenbank meine Tabelle aktualisieren.
Das einfügen und auslesen funktioniert, nur wird erst nach einem Programmneustart der neue Wert in die Tabelle geschrieben. Wie kann ich der Tabelle mitteilen, das sich Daten in der DB geändert haben.
Hier die Codes:
Code:
package kundenverwaltungPackage;
import java.awt.Color;
import java.awt.Component;
import java.awt.EventQueue;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableModel;
import javax.swing.JTabbedPane;
public class kunden extends JFrame {
private JPanel contentPane;
JPanel [] panels = new JPanel[3];
JTabbedPane tb;
static JScrollPane scrollPaneTblKunden;
private JButton btnNewButton;
public kunden(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//setBounds(100, 100, 707, 466);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
GraphicsEnvironment graphicsEnvironment=GraphicsEnvironment.getLocalGraphicsEnvironment();
Rectangle maximumWindowBounds=graphicsEnvironment.getMaximumWindowBounds();
setBounds(maximumWindowBounds);
JButton btnNeuerKunde = new JButton("Neuen Kunden anlegen");
btnNeuerKunde.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
new neueKundenAnlegen().setVisible(true);
new DBInsertMySQL();
DBInsertMySQL.NeueKundenTablleAnlegen();
}
});
btnNeuerKunde.setBounds(10, 11, 162, 23);
contentPane.add(btnNeuerKunde);
//******************************************************************************************************************************
//Neue Tabs hinzufügen
tb = new JTabbedPane();
tb.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
tb.setBounds(maximumWindowBounds);
tb.setLocation(0, 100);
contentPane.add(tb);
for(int i = 0; i < panels.length; i++){
panels[i] = new JPanel();
}
tb.addTab("Kunden", panels[0]);
tb.addTab("Mitarbeiter", panels[1]);
tb.addTab("Reserve", panels[2]);
panels[0].setLayout(null);
panels[1].setLayout(null);
panels[2].setLayout(null);
//Datenbank auslesen und in Tabelle schreiben
TableModel jTableModel = new DefaultTableModel(DBInsertMySQL.KundenAuslesen(), new String[] { "Kundennummer", "Kunde", "Straße", "Postleitzahl", "Ort" });
JTable tblKunden = new JTable(){
private static final long serialVersionUID = 1L;
public boolean isCellEditable (int data, int columns){
return false;
}
public Component prepareRenderer(TableCellRenderer r, int data, int columns){
Component c = super.prepareRenderer(r, data, columns);
if (data % 2 == 0)
c.setBackground(Color.WHITE);
else
c.setBackground(Color.LIGHT_GRAY);
return c;
}
};
tblKunden.setFillsViewportHeight(true);
tblKunden.setColumnSelectionAllowed(true);
tblKunden.setCellSelectionEnabled(true);
panels[0].add(tblKunden);
tblKunden.setModel(jTableModel);
tblKunden.setEnabled(true);
tblKunden.setRowHeight(25);
tblKunden.setBounds(maximumWindowBounds);
scrollPaneTblKunden = new JScrollPane();
scrollPaneTblKunden.setLocation(0, 0);
scrollPaneTblKunden.setBounds(maximumWindowBounds);
panels[0].add(scrollPaneTblKunden, "cell 0 0");
scrollPaneTblKunden.setViewportView(tblKunden);
btnNewButton = new JButton("DB Update");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
btnNewButton.setBounds(263, 11, 89, 23);
contentPane.add(btnNewButton);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
kunden frame = new kunden();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
Code:
package kundenverwaltungPackage;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.GridBagLayout;
import javax.swing.JLabel;
import javax.swing.JTextField;
import java.awt.Font;
import javax.swing.JButton;
import javax.swing.AbstractAction;
import java.awt.event.ActionEvent;
import javax.swing.Action;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class neueKundenAnlegen extends JFrame {
private JPanel contentPane;
private static JTextField tfKunde;
public static String kdnr, kunde, straße, ort, plz;
private JTextField tfStraße;
private JTextField tfOrt;
private JTextField tfPlz;
private JTextField tfKundennummer;
public neueKundenAnlegen() {
setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
setBounds(200, 200, 700, 500);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel lblKundenummer = new JLabel("Kundennummer:");
lblKundenummer.setBounds(10, 11, 94, 14);
contentPane.add(lblKundenummer);
JLabel lblKunde = new JLabel("Kunde:");
lblKunde.setBounds(10, 36, 80, 14);
contentPane.add(lblKunde);
tfKunde = new JTextField();
tfKunde.setBounds(129, 33, 159, 20);
contentPane.add(tfKunde);
tfKunde.setColumns(10);
JLabel lblAnschrift = new JLabel("Anschrift:");
lblAnschrift.setFont(new Font("Tahoma", Font.BOLD, 12));
lblAnschrift.setBounds(10, 66, 80, 14);
contentPane.add(lblAnschrift);
JLabel lblStraße = new JLabel("Stra\u00DFe:");
lblStraße.setBounds(10, 91, 46, 14);
contentPane.add(lblStraße);
JLabel lblOrt = new JLabel("Ort:");
lblOrt.setBounds(10, 116, 46, 14);
contentPane.add(lblOrt);
JLabel lblPostleitzahl = new JLabel("Postleitzahl:");
lblPostleitzahl.setBounds(10, 141, 80, 14);
contentPane.add(lblPostleitzahl);
JLabel lblAusgabe = new JLabel("");
lblAusgabe.setBounds(0, 439, 684, 23);
contentPane.add(lblAusgabe);
JButton btnSpeichern = new JButton("Speichern");
btnSpeichern.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
kdnr = tfKundennummer.getText();
kunde = tfKunde.getText();
straße = tfStraße.getText();
ort = tfOrt.getText();
plz = tfPlz.getText();
new DBInsertMySQL().eintragenKunde(kdnr, kunde, straße, ort, plz);
DBInsertMySQL.KundenAuslesen();
}
});
btnSpeichern.setBounds(74, 270, 103, 23);
contentPane.add(btnSpeichern);
tfStraße = new JTextField();
tfStraße.setBounds(129, 88, 159, 20);
contentPane.add(tfStraße);
tfStraße.setColumns(10);
tfOrt = new JTextField();
tfOrt.setBounds(129, 113, 159, 20);
contentPane.add(tfOrt);
tfOrt.setColumns(10);
tfPlz = new JTextField();
tfPlz.setBounds(129, 138, 159, 20);
contentPane.add(tfPlz);
tfPlz.setColumns(10);
tfKundennummer = new JTextField();
tfKundennummer.setBounds(129, 8, 159, 20);
contentPane.add(tfKundennummer);
tfKundennummer.setColumns(10);
JButton btnNewButton = new JButton("Schließen");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
btnNewButton.setBounds(199, 270, 103, 23);
contentPane.add(btnNewButton);
}
}
Code:
package kundenverwaltungPackage;
import java.sql.*;
import java.util.ArrayList;
import java.util.Vector;
import javax.swing.JScrollPane;
public class DBInsertMySQL {
static boolean TableCreated;
public static boolean NeueKundenTablleAnlegen() {
Connection con = null;
Statement stmt;
try {
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/kundenverwaltung?user=root&password=");
stmt = con.createStatement();
String sql = "CREATE TABLE IF NOT EXISTS mitarbeiter (kdnr varchar(50), kunde varchar(50), straße varchar(50), ort varchar(50), plz varchar(50))";
stmt.executeUpdate(sql);
stmt.close();
TableCreated = true;
}
catch (SQLException e) {
e.printStackTrace();
TableCreated = false;
}
finally {
if (con != null)
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return TableCreated;
}
public int eintragenKunde(String kdnr, String kunde, String straße, String ort, String plz) {
Connection con = null;
try {
con = DriverManager.getConnection("jdbc:mysql://localhost/kundenverwaltung?user=root&password=");
Statement stmt1 = con.createStatement();
return stmt1.executeUpdate("INSERT INTO mitarbeiter " + " (kdnr, kunde, straße, ort, plz) VALUES('" + kdnr
+ "', '" + kunde + "', '" + straße + "', '" + ort + "', '" + plz + "')");
}
catch (SQLException e) {
e.printStackTrace();
return 0;
}
}
public static String[][] KundenAuslesen() {
int columnindex = 0;
int rowcounter = 0;
String [][] returnds = null;
ArrayList<String> row = new ArrayList<>();
Connection con = null;
Statement stmt;
ResultSet rs;
try {
con = DriverManager.getConnection("jdbc:mysql://localhost/kundenverwaltung?user=root&password=");
stmt = con.createStatement();
rs = stmt.executeQuery("select * from mitarbeiter");
while (rs.next()) {
try {
columnindex = 0;
for (int i = 1;; i++) {
row.add(rs.getString(i));
columnindex++;
}
} catch (Exception e) {
System.out.println("");
}
}
}
catch (SQLException e) {
e.printStackTrace();
}
returnds = new String[row.size() / columnindex][columnindex];
for (int i = 0; i < returnds.length; i++){
for (int j = 0; j < returnds[i].length; j++){
returnds[i][j] = row.get(rowcounter++);
}
}
return returnds;
}
}