Forum: PC-Programmierung datenbankeintrag


von hans (Gast)


Lesenswert?

wie kann man in c abfragen, ob ein eintrag in die mysql datenbank 
gemacht wurde? mfg

von Peter (Gast)


Lesenswert?

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?

von hans (Gast)


Lesenswert?

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

von Dieter E. (netdieter) Benutzerseite


Lesenswert?

Das Stichwort heist Transaktion
Soweit ich weis kann MySQL das auch.

von Peter (Gast)


Lesenswert?

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.

von hans (Gast)


Lesenswert?

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

von Klaus W. (mfgkw)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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.

von Severino R. (severino)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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
Noch kein Account? Hier anmelden.