Breadcrumbs

MnMySQL

The MySQL function block is a simple MySQL client.

Syntax

Func_FbMySQL.bmp

C++
FUNCTION_BLOCK MySQL
VAR_INPUT
    Port: WORD;
END_VAR
VAR_OUTPUT
    State: MySQLState;
    SQLErrorMessage: STRING(MYSQL_STRING_LENGTH);
    SQLErrorCode: WORD;
    ServerVersion: STRING;
    ServerProtocolVersion: BYTE;
    ServerCapabilities: WORD;
    ServerStatus: WORD;
    ServerLanguage: BYTE;
    LastCallAffectedRows: DWORD;
    LastCallServerStatus: WORD;
    LastCallWarningCount: WORD;
    LastCallMessage: STRING(MYSQL_STRING_LENGTH);
END_VAR

Parameters

Parameter

Description

Port 

Port of the MySQL database (default: 3306). 

State 

Status of the connection. 

SQLErrorMessage 

Last SQL error message. 

SQLErrorCode 

Last  SQL error code. 

ServerVersion 

server version 

ServerProtocolVersion 

protocol version 

ServerCapabilities 

server info 

ServerStatus 

Server status 

ServerLanguage 

server language 

LastCallAffectedRows 

Changed entries during last query execution. 

LastCallServerStatus 

Last query execution Status. 

LastCallWarningCount 

Last query execution warnings. 

LastCallMessage 

Last query execution message. 


Example

C++
VAR
   sql : MySQL;
   host: STRING := '192.168.1.40';
   user: STRING := 'root';
   pwd: STRING := 'root';
   query : STRING;
   response : STRING;
   iCounter: INT;
   RetVal : MySQLReturnValue;
   iCountFields: INT;
   iCountRows: INT;
   sTableHeader : ARRAY [0..10] OF STRING;
   sTableData : ARRAY [0..600, 0..10] OF STRING;
   iTableIndex1: INT;
   iTableIndex2: INT;
   field: MySQLField;
   bReadSQLDatabase: BOOL;
END_VAR

IF bReadSQLDatabase THEN

   RetVal := sql.Connect(Server:= host, Username:= user, Password:= pwd);

   IF (sql.State = MySQLState.MYSQL_CONNECTED) THEN
       query := 'USE atest';
       RetVal := sql.Query(sQuery:= query);

       query := 'INSERT INTO mytable VALUES (';
       query := CONCAT(query, INT_TO_STRING(iCounter));
       query := CONCAT(query, ')');
       query := 'SELECT * FROM xtest';

       RetVal := sql.Query(sQuery:= query);
       IF (RetVal = MySQLReturnValue.MYSQL_DATA) THEN
           iCountFields := sql.GetFieldCount();
           iCountRows := sql.GetRowCount();

           FOR iTableIndex2 := 0 TO  sql.Fields - 1BY 1 DO
                field := sql.GetField(iFieldIndex:= iTableIndex2);
                sTableHeader[iTableIndex2] := field.name;
           END_FOR

           FOR iTableIndex1 := 0 TO  sql.Rows - 1 BY 1 DO
                   FOR iTableIndex2 := 0 TO  sql.Fields  - 1 BY 1 DO
                       sTableData[iTableIndex1, iTableIndex2] := sql.GetRow(iFieldIndex:= iTableIndex2, iRowIndex:= iTableIndex1);
                   END_FOR
           END_FOR

       END_IF
   END_IF

   RetVal := sql.DisConnect();

   bReadSQLDatabase := FALSE;
END_IF

Requirements



Remarks