Tach!
Ich bekomme Messdaten von einem anderen Programm übergeben (Socket).
Das ist eine Liste getrennt mit ":"
Messwert1:Messwert2:Messwert3:....Messwert125.
Das ist feststehend? Die Reihenfolge ist immer aufsteigend Messwert 1 bis 125?
Dann würde ich diese Messwerte zu einer Liste VALUES (...) umformen, womit der hintere Teil des Statements steht. Den vorderen Teil kannst du nun entweder als INSERT INTO table notieren, mit oder ohne nachfolgende Feldnamensliste. Die Feldnamensliste kann vorgefertigter String sein (besonders wenn die Messwertereihenfolge konstant bleibt).
Anhand einer Namensliste (Zuordnung Messwertname zum Messwert)
z.B. 1=Terperaturxy
2=Ölmenge
... usw
die ich habe, weiß ich das z.B. der Messwert1 die Temperaturxy ist, der Messwert2 die Ölmenge ist usw.
Diese Information braucht es für das Einfügen des Datensatzes nicht unbedingt, da die Reihenfolge ja durch die Messwertreihenfolge bestimmt ist. (Es sei denn, die Reihenfolge ist immer eine andere, dann muss eine Art Label den Messwerten zugeordnet sein, und über diese Label muss eine Übersetzung in den Feldnamen erfolgen.)
Ich erzeuge nun eine MySQL Tabelle (diese wird sich in der Reihenfolge nie ändern)
ID 0 = Messwert1
ID 1 = Messwert2
usw
ID 124 = Messwert125
Heißt das, dass die Felder à la "ID 0" (oder äquivalent) heißen? Oder heißt das, dass deine Tabelle nur "Messwertname" und "Wert" als Felder hat, vielleicht zuzüglich "Messzeitpunkt"? Letzteres wäre vermutlich kein so günstiges Design, aber ich kenne ja die Aufgabenstellung nicht komplett und kann das nur anhand von allgemeinen Grundsätzen vermuten.
So... nun möchte ich die Liste mit den Messwerten (Messwert1,Messwert2,Messwert3,....Messwert125.) in die Datenbank schreiben.
Hierzu kann ich nur die ID benutzen, damit ich weiß welcher Messwert wohin in die Datenbank (laut Reihenfolge) geschrieben werden muss.
Du musst lediglich eine Zuordnung von Messwert zu Feldnamen hinbekommen. Das kann einerseits durch eine konstante Reihenfolge erfolgen, andererseits durch eine Übersetzung, wenn die Reihenfolge wechselt.
Wie kann ich nun per SQL Befehl einen Wert z.B. an ID 10 schreiben bzw.
eine Liste mit 10 Messwerten von ID 0 - 9 schreiben ??
Das hängt stark vom wirklichen Tabellendesign ab. Bei "eine Zeile = Feldanzahl entsprechend der Anzahl der Messwerte = eine Reihe Messwerte" ist ein einfaches INSERT, wie oben im ersten Abschnitt der Antwort beschrieben, verwendbar. Beim anderen Ansatz (eine Zeile = ein Messwertname mit Wert) sind mehrere INSERT-Statements oder ein Multi-Column-Statement (INSERT ... VALUES (name, wert), (name, wert)) notwendig.
dedlfix.