Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

JTable nach Änderungen aktualisieren

Empfohlene Antworten

Veröffentlicht

Hallo!

Ich habe eine Anwendung gebaut die unter Swing eine Öberfläche erstellt in der eine JTable mittels SQL Select mit Daten aus einer Oracle Datenbank gefüllt wird.

Soweit so gut,... ich kann auch einzelne Zellen markieren und mit einem Actionistener diese "Löschen" in dem ich einen Update in der Datenbank durchführe und ein Flag auf N stat Y setze. Die Datensätze dürfen physikalisch nicht gelöscht werden nur "inaktiv" gesetzt werden.

Wie schaffe ich es das nach dem Update der Datenbank auf die Tabelle in der Ansicht geupdated wird ?? Ich habe schon mit FireTableDataChanged probiert, ich habe es mit repaint() probiert nichts hilft. Wer kann mir da den nötigen Denkanstoß geben ??

Quelltext:

// Zweites Panel Produkte

try {

// SQL-Select-Befehl

sql = "SELECT PRODUKT FROM PRODUKTE WHERE AKTIV='Y' ORDER BY ID";

stmt = con.createStatement();

result = stmt.executeQuery(sql);

ResultSetMetaData metaData = result.getMetaData();

int numberOfColumns = metaData.getColumnCount();

Vector columnNames = new Vector();

columnNames.addElement("Produkt");

//Alle Reihen einlesen

Vector rows = new Vector();

while (result.next()) {

Vector newRow = new Vector();

for (int i = 1; i <= metaData.getColumnCount(); i++) {

newRow.addElement(result.getObject(i));

}

rows.addElement(newRow);

}

result.close();

stmt.close();

tabelle1 = new JTable(rows, columnNames);

tabelle1.getTableHeader().setReorderingAllowed(false);

} catch (SQLException e) {

JOptionPane.showMessageDialog(

null,

"Fehler beim Auslesen der Datensätze",

"Administration - Produkte - Einlesen",

JOptionPane.ERROR_MESSAGE);

}

JScrollPane jsp1 = new JScrollPane(tabelle1);

pan2.add(jsp1, BorderLayout.CENTER);

JButton but_akt_p2 = new JButton("Aktualisieren");

JButton but_neu_p2 = new JButton("Neuer Datensatz");

JButton but_del_p2 = new JButton("Löschen");

but_del_p2.setEnabled(true);

but_akt_p2.setEnabled(false);

Box box2 = Box.createHorizontalBox();

box2.add(but_akt_p2);

box2.add(but_neu_p2);

box2.add(but_del_p2);

// Button "Neuer Datensatz"

but_neu_p2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent evt) {

String ret =

(String) JOptionPane.showInputDialog(

getContentPane(),

"Bitte neuen Datensatz eingeben");

System.out.println(ret);

try {

sql =

"INSERT INTO PRODUKTE VALUES(PROD_SEQ.NEXTVAL,'"

+ ret

+ "','Y')";

stmt = con.createStatement();

result = stmt.executeQuery(sql);

result.close();

stmt.close();

} catch (SQLException exp) {

JOptionPane.showMessageDialog(

null,

"Fehler beim Anlegen des Datensatzes",

"Administration - Produkte - Eingabe",

JOptionPane.ERROR_MESSAGE);

}

}

});

// Funktion "Löschen" implementieren durch setzen des Aktiv-Flags auf 'N'

but_del_p2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent evt) {

int selected= tabelle1.getSelectedRow();

try {

sql = "UPDATE PRODUKTE SET AKTIV='N' WHERE ID="+selected+"";

stmt = con.createStatement();

result = stmt.executeQuery(sql);

result.close();

stmt.close();

tabelle1.firePropertyChange(sql,true, true);

} catch (SQLException e) {

}

}

});

pan2.add(box2, BorderLayout.SOUTH);

  • 3 Monate später...

Hallo,

Ich bekomme es einfach nicht hin, ich habe nun schon so oft dran rumgedoktert, ich weiß nicht wie ich meine Daten aus meiner SQL Abfrage in mein Tablemodel bekomme. Im Moment übergebe ich die Daten in einem Vector, ich weiß aber nicht wie ich den Code anpasse damit das mit einem Object (?) funktioniert!

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.