Function DE Version 5.00

@MySQLConnect

SQL

Syntax

@MySQLConnect(MySQLHandle;Host;User;Password);
@MySQLConnect(MySQLHandle;Host;User;Password;DefaultDB);

Beschreibung

Stellt eine Verbindung zum MySQL-Server her.
Sollte nach @MySQLoptions aufgerufen werden.

Der VSPECMYSQL MySQLHandle wird von @MySQLInit geliefert.

TEXT Host (für lokal "" (NULLSTR))
TEXT User (kann u.U. auch "" (NULLSTR) sein)
TEXT Password (kann u.U. auch "" (NULLSTR) sein)
TEXT DefaultDB (kann u.U. auch "" (NULLSTR) sein)

Return:
Im Erfolgsfall TRUE andernfalls @Error;

Beispiel: @MySQLConnect(MySQLHandle;Host;User;Password;DefaultDB);

/* Beispiel: Einfache MySQL-Abfrage aus der Engine.
Das Skript stellt eine Verbindung zu einer MySQL-Datenbank her,
liest einen Datensatz aus der Tabelle testdb.amount,
übernimmt die Ergebniswerte in Variablen und gibt diese im Log aus. */

/* MySQL-Handle initialisieren. */
MySQLh:=@MySQLInit;

/* Fehlerstatus vorbelegen: 1 bedeutet Fehler bzw. noch keine erfolgreiche Verbindung. */
MySQLError:=1;

/* Prüfen, ob die Initialisierung des MySQL-Handles erfolgreich war. */
IF(@IsError(MySQLh)){
   @LogReport(MySQLh;3);
}ELSE{
   /* MySQL-Optionen setzen bzw. initialisieren. */
   @MySQLOptions(MySQLh);
   
   /* Verbindungsdaten für den MySQL-Server festlegen. */
   MySQLUser:="MySQLConnector";
   MySQLPassword:="ConnectorPassword";
   MySQLDefaultDatabase:="testdb";
   MySQLHost:="172.16.1.215";
   
   /* Verbindung zur MySQL-Datenbank herstellen. */
   Ret:=@MySQLConnect(MySQLh;MySQLHost;MySQLUser;MySQLPassword;MySQLDefaultDatabase);
   
   /* Wenn die Verbindung fehlschlägt, Fehler protokollieren. */
   IF(@IsError(Ret)){
      @LogReport(Ret);
   }ELSE{
      /* Verbindung war erfolgreich; Fehlerstatus zurücksetzen. */
      MySQLError:=0;}
   
   /* Die Abfrage nur ausführen, wenn die Verbindung erfolgreich hergestellt wurde. */
   IF(!MySQLError){
      /* Datensatz mit einem bestimmten Namen aus der MySQL-Tabelle lesen. */
      QueryStr:="SELECT ID,Name,Amount,UID FROM testdb.amount WHERE Name=\"Test User\";";
      
      /* Query ausführen und das Ergebnis-Handle in MySQLResH zurückgeben. */
      Ret:=@MySQLQuery(MySQLh;QueryStr;MySQLResH);
      IF(@IsError(Ret)){
         @LogReport(Ret;3);}
      
      /* Anzahl der von der Abfrage zurückgegebenen Zeilen ermitteln. */
      NumRows:=@MySQLGetNumRows(MySQLResH);
      @LogReport("NumRows:"+@Text(NumRows);3);
      
      /* Genau einen erwarteten Datensatz auslesen. */
      IF(NumRows=1){
         /* Erste Ergebniszeile lesen und die Spaltenwerte in Variablen übernehmen. */
         Ret:=@MySQLFetchRow(MySQLResH;1;ThisQueryID;ThisQueryName;ThisQueryAmount;ThisQueryUID);
         IF(@IsError(Ret)){
            @LogReport(Ret;3);}
      }ELSE{
         /* Wenn kein eindeutiger Datensatz gefunden wurde, Standardwerte setzen. */
         ThisQueryID:=-1;
         ThisQueryAmount:=0;
         ThisQueryName:=ThisQueryUID:="";
      }
      
      /* Ergebnis-Handle freigeben. */
      MySQLResH:=@MySQLFreeResult(MySQLResH);
      
      /* Die gelesenen bzw. gesetzten Ergebniswerte ausgeben. */
      @LogReport("ThisQueryID :"+@Text(ThisQueryID);3);
      @LogReport("ThisQueryName :"+ThisQueryName;3);
      @LogReport("ThisQueryAmount:"+@Text(ThisQueryAmount);3);
      @LogReport("ThisQueryUID :"+ThisQueryUID;3);
   }
   
   /* MySQL-Verbindung schließen. */
   MySQLh:=@MySQLClose(MySQLh);
}

/* MySQL-Thread-Kontext beenden bzw. aufräumen. */
@MySQLThreadEnd;

MySQL DB für dieses Beispiel:
CREATE DATABASE testdb
CHARACTER SET latin1 COLLATE latin1_german1_ci;

CREATE TABLE testdb.amount (
`ID` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`Name` VARCHAR(30),
`Amount` FLOAT,
`UID` VARCHAR(32),
`ModTime` DATETIME,
PRIMARY KEY(`ID`),
INDEX `Name` USING BTREE (`Name`),
INDEX `UID` USING BTREE (`UID`)
)
ENGINE = MYISAM
CHARACTER SET latin1 COLLATE latin1_german1_ci;

INSERT INTO testdb.amount (Name,Amount,UID,ModTime) VALUES ("Test User",123.45,"1234567890ABCDEFABCD1234567890AB",NOW());

Ausgabe im APILOG für dieses Beispiel:
NumRows:1
ThisQueryID :1
ThisQueryName :Test User
ThisQueryAmount:123.45
ThisQueryUID :1234567890ABCDEFABCD1234567890AB

Eine MySQL-Verbindung wird etabliert und ein Query abgesetzt, anschließend wird das Ergebnis im APILOG ausgegeben.