fireTableDataChanged()

bleifresser

Mitglied
Hi,

ich weiß, dass es zu diesem Thema schon viele Post's gibt. Denoch hat mir keiner wirklich geholfen.
Ich spiele nun seit 2 Tagen mit Java und hsqldb rum und es läuft so nicht schlecht. Ich hab mir ein Testprogramm geschrieben, was komplett auf der DB arbeitet. Damit meine ich, dass ich Daten aus der DB direkt in eine JTable schreibe, ohne sie in einer Liste (etc.) zwischen zu speichern.
Ich habe mir ein TableModel erstellt und eine Funktion eingebaut, die Daten in die DB einfügt. Diese Daten kommen aus Textfeldern aus einer Gui. Am Ende der Funktion rufe ich fireTableDataChanged() auf.
Anfagns sieht alles gut aus, es wird eine neue Verbindung zur Datenbank aufgebaut und selbige auch ausgelesen. Leider wird aber die Tabelle nicht aktualisiert.
Woran könnte es liegen ?
 
Moin,
sicher nicht an fireTableDataChanged. Entweder wird es nicht oder zu früh (Racing condition?) aufgerufen.
 
Hi,
ich weiß das du ein großer Verfechter von fireTableDataChanged() bist und wenn es funktioniert ist es bestimmt auch toll.
Code:
public void input(String nr,String artist, String titel)throws SQLException,ClassNotFoundException{
			
			verbinden();/**Verbindung zur DB**/
			Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
			String sqlQuery = "INSERT INTO cdShop VALUES ('"+nr+"','"+artist+"','"+titel+"')";
			ResultSet rs = stmt.executeQuery(sqlQuery);
			kill();/**Trennt die DB Verbindung**/
			fireTableDataChanged();
	
		}

Ich hab eine Gui Klasse in der ein ActionListener für einen Hinzufügen-Button steckt. Auch
die Tabelle wird dort erzeugt, indem ich ihr mein TableModel zuweise.
Das ist die Funktion in meiem TableModel (AbstractTableModel) und wird aufgerufen, wenn in der Gui der "Hinzufügen" Button gedrückt wird.
Evtl. hab ich ein gravierenden Denkfehler !
 
Ich hab mein Fehler gefunden. Ich hab zwar die Tabelle mit fireTableDataChanged() neugezeichnet, aber das Model nicht aktualisiert. Somit hat fireTabelDataChanged() die Tabelle immer mit den alten Daten neu gezeichnet.
 
Zurück