Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich habe vor mit Java ein GUI zu schreiben das den Inhalt einer Mysql Datenbank ausgibt. Dieser soll sich aber möglichst in "Echtzeit" (ca. 1-2 Sekunden) aktualiesieren. Warum Java? -> weil das ganze Plattformunabhängig werden soll.
Daten aus einer Mysql Datenbank in einen Vektor zu schreiben und anschließend in einer JTable auszugeben habe ich bereits anhand eines "Tutorials" ans laufen gekriegt.
Nun meine Frage:
Ist diese Methode, gerade in Bezug auf die ständigen aktualisierungen, die Daten in einen Vektor zu schreiben und diesen auszugeben oder wie ich es bereits in einem anderen Tutorial gesehen habe das ganze über Objekte anzugehen?
Der Observer / bzw eines der Patterns wird wichtig wenn du Clienten ( z.B alle angemeldeten Nutzer ) darüber benachrichtigen möchtest das sich an z.B Werten in deiner Tabelle irgendwas geändert hat, desweiteren solltest du um Plattformübergreifend agieren zu können , dein View ( also die GUI ) von deiner Logik trennen, um deine Tabelle ohne Probleme auf unterschiedlichen Endgeräten / Betriebssystemen / Plattformen darzustellen zu können und ggf. Das GUI an die jeweiligen gegebenheiten anpassen zu können ohne bestehenden Code ändern zu müssen .
ein Separater Thread ist wichtig da du sonst die Anzeige für jeglich andere Aktionen blockierst, wenn alle 1-2 Sekunden aktualisiert wird.
mal eben schnell Copy & Paste wird dich da glaube ich nicht viel weiterbringen
[EDIT]soll deine "GUI" nichts anderes machen als die Tabelle optisch darzustellen und und im Hintergrund alle 1-2 Sekunden zu aktualisieren ? [/EDIT]
Achsoo. Richtig, das GUI ist schlichtweg nur zum anzeigen gedacht. Es muss nicht auf irgenwelche Veränderungen reagieren und auch der Betrachter muss damit nicht interagieren können.
Und das das kein einfaches Copy & Paste wird war mir schon klar
Dann könntest du einfach eine neue Klasse erstellen welche deine GUI darstellt, die z.B in einem JPanel deinen Vector optisch, z.B in Form eine JTable darstellt, und eine Methode schreiben die halt alle 1-2 sekunden prüft ob die Daten in deinem Vector immernoch die gleichen sind oder ob sich was geändert hat, das würdest du dann in einem Separaten Thread erledigen , und bei bedarf einfach die Darstellung in deinem JPanel / der JTable aktualisieren.
Mir stellt sich da eher die Frage, ob es sinn macht, alle 1-2 Sekunden die komplette datenbank neu zu laden (auch einzelne Tabellen wären problematisch).
Ich hielte einen simplen aktualisieren-knopf für deutlich sinnvoller...
deswegen habe ich auch geschrieben , man könnte in einem Separaten Thread prüfen ob sich an den Daten in dem Vector was geändert hat, und bei bedarf den View aktualisieren , selbstverständlich macht da ein "Aktualisieren" Button mehr Sinn, alleine schon da diese Lösung wesentlich weniger Speicher und Ressourcen verbrauchen würde (anstelle eines im Hintergrund "Endlos" laufenden Threads).
Was bringt der Tabelle das, sich zu aktualisieren wenn keiner zuschaut :lol:
[EDIT]Es galt lediglich um das aufzeigen einer Möglichkeit, da anscheinend wenig, bis kein Hintergrundwissen über OOP vorhanden zu sein scheint [/EDIT]
Ich weiss, dass es schlechter Ton ist in einem Thread das vorhaben des TEs in Frage zu stellen aber bei dieser Frage... musste das sein :LOL.
Nein, im ernst @TE:
Wenn du eine ständig aktuelle Ansicht haben willst ist es schon problemlos möglich für eine oder zwei Tabellen alle paar Sekunden diejenigen Werte neu abzurufen, die dem User grade angezeigt werden (vllt auchnoch 100 Zeilen +-). Aber alles darüber hinaus stresst die DB unnötig und wenn du pech hast schmiert sie dir regelmäßig ab. Zudem bleibt weniger Traffic für deine User übrig und das wäre schade.
Kenne mich mit MySQL nicht aus. Eine allgemeine Lösung ist, dass man in einer zusätzlichen Spalte einen Timestamp mit der letzten Aktuallisierung speichert und sich nur die Datensätze ab einem bestimmten Zeitpunkt ausgeben lässt. Den Index sollte man nicht vergessen. Dürfte die Datenbank / Traffic nicht so stark belasten.