Zum Inhalt springen

JTable nach Änderungen aktualisieren


AlexD979

Empfohlene Beiträge

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);

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...