Schreiben eines Array in MySQL

Fl0Bru

Level-1
Beiträge
49
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe eine WAGO 750-881 und möchte mit dieser ein Array mit 1000 DINT Werten in eine MySQL schreiben.

Bisher hatte ich den INSERT-Befehl mit jeder Einzelnen Variablen übergeben, bei ca. 12 Variablen ist das auch noch gut machbar, aber bei 1000 wird das zu viel.

Wie kann ich der Datenbank das Array übergeben, und wie muss die Tabelle aussehen?


Grüße

Florian
 
Hallo Fl0Bru,

wie sieht denn deine Datenbankstruktur aus? Was genau möchtest du erreichen?
Hier mal ein Beispiel, wie sowas aussehen könnte. Selbstverständlich führen hier viele Wege zum Ziel.

Code:
PROGRAM PLC_PRG
VAR
    (* Local *)
    iSequenceState: INT;
    iLineNo: INT;
    xStartExecute: BOOL;
    xExecute: BOOL;
    oMySQL: MySql_Context;
    asSqlCommand: ARRAY[0..gcMySql_iSqlUpperBound] OF STRING(gcMySql_iSqlLength);

    adiLineValue: ARRAY[1..c_iLines] OF DINT;

    (* Instances *)
    instMySql_Execute: MySql_Execute;
END_VAR

VAR CONSTANT
    c_iLines: INT:= 1000;
END_VAR


(* ************************************************************ *)
(* Execute *)

(* Init; Dein Array of DInt *)
adiLineValue[1]:= 666;
adiLineValue[2]:= 666;
adiLineValue[3]:= 666;

(* Sequence *)
IF xStartExecute THEN
    CASE iSequenceState OF

        10:
            xExecute:= TRUE;
            iSequenceState:= 20;

        20:
            IF NOT xExecute THEN
                IF iLineNo >= c_iLines THEN
                    iLineNo:= 1;
                    xStartExecute:= FALSE;
                ELSE
                    iLineNo:= iLineNo + 1;
                END_IF;

                iSequenceState:= 0;
            END_IF;

    ELSE
        (* Parameter apply *)
        asSqlCommand[0]:= 'INSERT INTO Deine_Tabelle (';
        asSqlCommand[1]:= 'Deine_Spalte';
        asSqlCommand[2]:= ') VALUES (';
        asSqlCommand[3]:= DINT_TO_STRING(adiLineValue[iLineNo]);
        asSqlCommand[4]:= ') ';

        iSequenceState:= 10;
    END_CASE;
ELSE
    iLineNo:= 1;
    iSequenceState:= 0;
END_IF;


(* Call *)
instMySql_Execute(
    asSqlCommand:= asSqlCommand,
    oMySql:= oMySQL,
    xStart:= xExecute,
    diError=> ,
    sStatus=> );
 
Zuletzt bearbeitet:
Zurück
Oben