@MySQLThreadEnd
Syntax
@MySQLThreadEnd;
Beschreibung
Diese @Funktion muss vor beenden eines Threads aufgerufen werden!
HINWEIS:
Diese @Funktion gibt den MySQL-Kontext frei!
Nach dem Aufruf von @MySQLThreadEnd dürfen keine weiteren MySQL-Funktionen mehr aufgerufen werden.
Beispiel: @MySQLThreadEnd;
/* 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.
