wie kann man in c abfragen, ob ein eintrag in die mysql datenbank gemacht wurde? mfg
hast du den eintrag schon gemacht und willst nur wissen ob es ein fehler gab oder willst du wissen ob in der Datenbank etwas vorhanden ist?
in der datenbank sind schon einträge vorhanden und es kommen neue daten über funk an diese werden decodiert und in die datenbank geschrieben da wir aus sicherheitsgründen von der messstation 3x senden (denn wenn reißt die gesamte verbindung ab wenn es aus der luft "gefiltert" wurde war es bis jetzt durch die codierung immer richtig daher kein vergleichen der 3 ankommenden datensätze) werden natürlich wenn es optimal läuft 3 einträge in die datenbank gemacht. das wollen wir verhindern unsre idee wäre gewesen einfach fragen ob ein eintrag gemacht wurde oder nicht, wenn ja die restlichen ankommenden daten verwerfen
naja Transaktion hieft dir nicht weiter, mache doch einfach ein Select auf die Tabelle mit den werten die du eintragne willst, wenn etwas zurück kommt dann ist der wert schon drin. Man könnte es auch Unique index auf die Daten legen, wenn du dann doppelte werte einfügen willst dann bekommt du eine Fehlermeldung.
danke haben aber jetzt schon eine andere variante gefunden die funktioniert. da wir nur zu definierten zeiten senden (geregelt über rtc und alle 15min) und das alles in weit unter einer minute geschieht schauen wir einfach auf die uhrzeit am server und pro gleicher uhrzeit darf nur ein eintrag gemacht werden so funktionierts jetzt mal
Man kann auch mit SELECT COUNT(*) FROM Tabellennname die Anzahl der Einträge abfragen. Wenn niemand in der Tabelle löscht, bekommt man mit, wenn etwas dazu kommt.
hans schrieb: > danke haben aber jetzt schon eine andere variante gefunden die > funktioniert. da wir nur zu definierten zeiten senden (geregelt über rtc > und alle 15min) und das alles in weit unter einer minute geschieht > schauen wir einfach auf die uhrzeit am server und pro gleicher uhrzeit > darf nur ein eintrag gemacht werden so funktionierts jetzt mal Bis dann irgendwann der Admin kommt und die Uhrzeit am Rechner wieder mal an die amtliche Uhrezeit anpasst. Apropos: Was tut ihr eigentlich, wenn der Sender zu senden beginnt, wenn es am Server gerade 11:58:50 ist und die Übertragung 9 Sekunden dauert. Der erste Datensatz hat dann eine Zeitmarke von 11:58, die nächste Wiederholung aber 11:59. Timestamps sind unterschiedlich -> doppelter Eintrag in die Datenbank. Aber ok. Jeder muss irgendwann mal lernen, dass solche Hacks zu den blödesten Zeiten dazu tendieren, ein ungewolltes Eigenleben zu führen. Sender hat eine fortlaufende Datensatz-Nummer für jeden eindeutigen Datensatz. Wenn ein Datensatz also x-mal hintereinander wiederholt gesendet wird, schickt der Sender jedesmal die gleiche Datensatznummer. Ehe der Eintrag in die Datenbank erfolgt, wird in der Datenbank nachgesehen, ob es schon einen Eintrag mit der Datensatznummer gibt. > da wir aus sicherheitsgründen von der messstation 3x senden (denn > wenn reißt die gesamte verbindung ab wenn es aus der luft > "gefiltert" wurde war es bis jetzt durch die codierung immer > richtig daher kein vergleichen der 3 ankommenden datensätze) Mit der Datensatznummer könnte man die beiden Datensätze sogar miteinander vergleichen! Sind sie unterschiedlich, dann gab es einen Übertragungsfehler, den das Protokoll nicht entdeckt hat.
Karl heinz Buchegger schrieb: > Sender hat eine fortlaufende Datensatz-Nummer für jeden eindeutigen > Datensatz. und irgend wann läuft die Nummer über, es gibt einen Wrap-Around, die Nummern werden wiederholt, in der Datenbank sind die uralten Datensätze immer noch vorhanden und die neuen Datensätze werden verworfen ;-) Ist keine Kritik! Man muss nur daran denken, dass das geschehen kann und entsprechende Vorkehrungen treffen.
Severino R. schrieb: > Karl heinz Buchegger schrieb: > >> Sender hat eine fortlaufende Datensatz-Nummer für jeden eindeutigen >> Datensatz. > > und irgend wann läuft die Nummer über, es gibt einen Wrap-Around, die > Nummern werden wiederholt, in der Datenbank sind die uralten Datensätze > immer noch vorhanden und die neuen Datensätze werden verworfen ;-) > > Ist keine Kritik! Man muss nur daran denken, dass das geschehen kann und > entsprechende Vorkehrungen treffen. Muss man. Auf der anderen Seite: > geregelt über rtc und alle 15min Ein 16 Bit Index reicht dann schon 682 Tage lang Mit 32 Bit langt das dann für 122573 Jahre. Sollte reichen
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.