mikrocontroller.net

Forum: PC-Programmierung datenbankeintrag


Autor: hans (Gast)
Datum:

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

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dieter Engelhardt (netdieter) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Stichwort heist Transaktion
Soweit ich weis kann MySQL das auch.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Severino R. (severino)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.