roger: in Datenbank per Name und id schreiben/lesen

Hallo,

ich bekomme von einem anderen Programm Messdaten in einem Array übergeben.

Diese will ich in einer Datenbank speichern um anderen Programmen Zugriff per Feldnamen zu ermöglichen.
In meiner Datenbank hat natürlich jeder Messwert einen Namen. Wie kann ich nun in die Datenbank per Variablennummer (id) schreiben.

Oder kann ich jedem Feldnamen auch einen Nummer zusätzlich mitgeben. Hier bin ich neu, wie so etwas gelöst werden kann.

z.B.

Drehzahl varnr1 80%
Temp     varnr2 80°C

oder so ähnlich.

Gruss
    roger

  1. Tach!

    Du beschreibst dein Problem nicht in einer Weise, dass ich es verstehen kann. Versuch dein Problem zu beschreiben, ohne eine bestimmte Lösung im Hinterkopf zu haben.

    ich bekomme von einem anderen Programm Messdaten in einem Array übergeben.

    Wie sieht diese Struktur aus?

    Diese will ich in einer Datenbank speichern um anderen Programmen Zugriff per Feldnamen zu ermöglichen.

    Wie sieht die Tabellenstruktur aus?

    In meiner Datenbank hat natürlich jeder Messwert einen Namen. Wie kann ich nun in die Datenbank per Variablennummer (id) schreiben.

    Was ist eine Variablennummer?

    Oder kann ich jedem Feldnamen auch einen Nummer zusätzlich mitgeben.

    Wo mitgeben? Beim INSERT? Dessen Syntax ist nicht zuletzt im Handbuch zum DBMS beschrieben. Es gibt nur die zwei Varianten unter Nennung des Feldnamens (nebst Auslkassen bestimmter Felder und deren Werte) oder ohne Nennung in der Reihenfolge der Felder (dann aber ohne ein Feld auszulassen). (Letzteres will man weniger, weil einem eine Änderung des Felder-Reihenfolge die Statements kaputt macht. Andererseits kann man sowieso nicht einfach so, ohne die Folgen zu beachten, irgendwo Änderungen vornehmen.)

    dedlfix.

    1. Hallo,

      Du beschreibst dein Problem nicht in einer Weise, dass ich es verstehen kann. Versuch dein Problem zu beschreiben, ohne eine bestimmte Lösung im Hinterkopf zu haben.

      Sorry für die schlechte Beschreibung.

      Ich bekomme Messdaten von einem anderen Programm übergeben (Socket).
      Das ist eine Liste getrennt mit ":"

      Messwert1:Messwert2:Messwert3:....Messwert125.

      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.

      Ich erzeuge nun eine MySQL Tabelle (diese wird sich in der Reihenfolge nie ändern)

      ID 0 = Messwert1
      ID 1 = Messwert2
      usw
      ID 124 = Messwert125

      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.

      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 ??

      Gruß
               roger

      1. 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.