Laden...

Prüfen ob neue Zeile in Datebank erstellt wurde!

Erstellt von 27sharpme vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.202 Views
2
27sharpme Themenstarter:in
17 Beiträge seit 2013
vor 11 Jahren
Prüfen ob neue Zeile in Datebank erstellt wurde!

verwendetes Datenbanksystem: <MySql>

Moin ,

Wie die Überschrift schon sagt möchte ich wissen , wie ich prüfen kann ob eine neue Zeile in der Datanbank existiert.?

Ich habe eine Combobox in dem Werte aus der Datenbank stehen , und ich möchte die Werte Aktualisieren ohne die Form neuzustarten.

Vielen Dank im voraus.

1.552 Beiträge seit 2010
vor 11 Jahren

Hallo 27sharpme,

du könntest Zeitstempel welche das Erstelldatum der Zeile in der Datenbank speichern hinzufügen. Bei der Abfrage kannst du dann anhand dieses Zeitstempels die Abfrage modifizieren, dass nur die neuen Zeilen zurückkommen.

Gruß,
Michael

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

2
27sharpme Themenstarter:in
17 Beiträge seit 2013
vor 11 Jahren

Vielen Dank für die Antwort ,
doch wie mache ich die Abfrage und wie kann ich die Combobox aktuell halten , denn die werte kommen bei Form_load.

F
115 Beiträge seit 2012
vor 11 Jahren

Hi,

also entweder Du merkst Dir den Timestamp des letzten bekannten Satzes in Deiner Anwendung und prüfst dann regelmäßig, ob es einen Satz mit jüngerem TS gibt, oder aber Du versuchst die Log-Files zu überwachen. Letzteres halte ich für ein großes Faß, was auch nicht mit jeder DB geht. MySQL scheint da was zu haben

Einführung in die Replikation

aber ich täte lieber xxMUROxx Lösung nehmen.

Achja - falls Dir nur kein SQL eingefallen ist:

SELECT * FROM TABELLE
  WHERE EINSTELL_TS > :merkTimeStamp
ORDER BY EINSTELL_TS DESC
LIMIT 1

sollte den jüngsten Datensatz liefern (ohne Gewähr, da ich MySQL nicht kenne)

Gruß
f_igy

2
27sharpme Themenstarter:in
17 Beiträge seit 2013
vor 11 Jahren

Also erstmal vielen Dank ,
doch irgendwie versteh ich das mit dem sql Befehlen immernoch nicht.

Also nur zur Verständigung:
Ich erstelle mir jetzt eine neue Spalte ,
indem das aktuelle Datum kommt und dies prüfe
ich mit dem darauffolgendem Datum ?
Doch das Prüfen habe ich noch nicht ganz begriffen.

1.552 Beiträge seit 2010
vor 11 Jahren

Wenn du das Erste mal lädts, dann lädts du alle Daten und speicherst dir im Programm die aktuelle Uhrzeit. Beim nächsten laden fragst du jene Datensätze ab, welche sich nach jener Zeit liegen welche du vorhin gespeichert hast. Dann merkst du dir wieder die aktuelle Zeit:*Alle laden, Zeit1 speichern. *Alle ab Zeit1 laden; Zeit mit neuer Zeit2 überschreiben *Alle ab Zeit2 laden; Zeit mit neuer Zeit3 überschreiben *Alle ab Zeit3 laden; Zeit mit neuer Zeit3 überschreiben

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

1.346 Beiträge seit 2008
vor 11 Jahren

Ich würde anstatt einer Zeit einfach die letzte Id nehmen, und dann gucken ob ein Eintrag mit einer höheren drin ist. Da hat man nicht das Problem, das unter Umständen die Zeit zwichen Client und Server nicht synchron laufen, und dazu sollte das sogar noch etwas schneller sein 😃

2
27sharpme Themenstarter:in
17 Beiträge seit 2013
vor 11 Jahren

Danke pdelvo!
Die Idee finde ich sogar besser.
Könntest du mir zeigen wie ich die ID vergleichen kann ?

1.552 Beiträge seit 2010
vor 11 Jahren

Könntest du mir zeigen wie ich die ID vergleichen kann

Du solltest dir dringendst Grundkenntnisse in SQL verschaffen, denn mit diesen Fragen sieht es danach aus, dass dir diese komplett fehlen. Ob man nun eine Id, oder Daten [Datum] vergleicht, das Vorgehen ist dasselbe.
[Hinweis] Wie poste ich richtig? 1.1.1

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

T
67 Beiträge seit 2010
vor 11 Jahren

Das mit der ID ist so eine Sache.
Was ist z.B., wenn ein Eintrag editiert wurde? Alte ID mit neuem Inhalt. Würde in dem Fall völlig untergehen. Nur um mal ein Beispiel zu nennen.
Um sicher zu gehen wirklich alle neuen und geänderten Einträge zu bekommen, und nur diese, bleibt Dir nur mit einem Timestamp zu arbeiten.

64 Beiträge seit 2012
vor 11 Jahren

Beim Load speicherst du dir die höchste ID

 SELECT MAX(id)  FROM deineTabelle; 

und schaust danach eben nur nach den einträgen mit einer höheren ID.

SELECT * FROM deineTabelle WHERE id > DieIDdieDuDirGespeichertHastBeimFormLoad

//EDIT: Mal wieder viel zu langsam...

++Rekursion ++
(lat. , die) siehe Rekursion