Saban Geschrieben 4. Mai 2009 Geschrieben 4. Mai 2009 Hallo Zusammen! Ich habe eine JTable mit einigen 100 Zeilen. Von dieser soll ich ab und an ein Update auf die (vorübergehende) Access DB durchführen. Nun würde ich gern nur die Zeilen aus der JTable auslesen die auch befüllt sind. Also z. B. nur die Zeilen in denen die Spalte 8 befüllt ist... Könnt ihr mir helfen? MfG Saban Zitieren
kingofbrain Geschrieben 5. Mai 2009 Geschrieben 5. Mai 2009 Du solltest den Wert einfach über JTable#getTableModel().getValueAt(int, int) erhalten. Die API Dokumentation ist für solche Informationen die erste Anlaufstelle. Peter Zitieren
Saban Geschrieben 5. Mai 2009 Autor Geschrieben 5. Mai 2009 Hi Peter eine Schleife über die Spalte laufen lassen und die befüllten Zeilen abfragen ist ja schön und gut aber wenn ich 1000 Zeilen hab und jede Zeile die befüllt ist auf der DB update dauert des ne gute Zeit... Ich hätt halt lieber abgefragt welche Zeilen vom User editiert wurden... Also das ich z. B. nur die zwei neu befüllten Zeilen ermittle... Ich hab mir schon gedacht die geändert Zeilen in einem Array zu speichern und dann einfach das Array abzuarbeiten aber ich weiss nicht nach welchen Kriterien ich die Zeilen ermitteln soll oder besser gesagt mit welchem Listener ich des erreichen kann... MfG Saban Zitieren
kingofbrain Geschrieben 5. Mai 2009 Geschrieben 5. Mai 2009 (bearbeitet) Das ging aus Deiner ersten Beschreibung nicht hervor. Ich halte es erstens für sinnvoll, trotzdem in der Geschäftslogik Deiner Anwendung nur dann Daten zu ändern, wenn sich auch inhaltlich etwas geändert hat. Das sollte also im Service oder im DAO geprüft werden, um unnötige schreibende Zugriffe zur Datenbank zu vermeiden. Dabei sollte jedes Datenobjekt wissen, welche Eigenschaften hier für einen Vergleich herangezogen werden sollen. Zu Deiner Frage: Du kannst einen TableModelListener an Dein TableModel hängen und den bei einer Änderung des Models benachrichtigen. Der kann sich dann die geänderten Daten merken, bis sie gespeichert werden sollen. Du musst allerdings noch nachschauen, wie Du aus dem Editor, der die Änderung durchführt, die Änderung der Daten an das Model kommunizierst, bzw. ob das automatisch passiert. Denn die Methode setValueAt wird meines Wissens auch bei der Initialbefüllung des Models aufgerufen und nicht nur bei Änderungen im Model. Peter Bearbeitet 5. Mai 2009 von kingofbrain Zitieren
Saban Geschrieben 5. Mai 2009 Autor Geschrieben 5. Mai 2009 Hi! Stimmt tut mir leid war bisschen schwammig formuliert! Ist wirklich nicht böse gemeint... Aber jetzt weiss ich genau so viel wie davor :confused: Ich glaub ich steh grad voll aufm Schlauch... Hast du vllt irgendwelche Code Stücke für mich? MfG Saban Zitieren
kingofbrain Geschrieben 6. Mai 2009 Geschrieben 6. Mai 2009 Nö, weil ich so was noch nicht gemacht hab. Ich habe mir die Java API Documentation angeschaut. Es gibt für jede JTable ein TableModel. Diesem TableModel kannst Du einen TableModelListener hinzufügen, der mitkriegt, ob im TableModel Änderungen vorgekommen sind. Auf diese Änderung hin merkst Du Dir das geänderte Objekt und speicherst es am Schluss weg. Peter Zitieren
Empfohlene Beiträge
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.