@MySQLQuery
Syntax
@MySQLQuery(MySQLHandle;QueryStr);
@MySQLQuery(MySQLHandle;QueryStr;MySQLResultHandle);
@MySQLQuery(MySQLHandle;QueryStr;MySQLResultHandle;AutoIncrementIDRet);
Beschreibung
Führt einen MySQL-Query aus.
Wenn die Anfrage ein Ergebnis liefert kann dieses im VSPECMYSQLRES MySQLResultHandle gespeichert werden.
Wenn die Anfrage ein INSERT Statement enthält und dieses auf eine AUTOINCREMENT ID Spalte einwirkt, wird die generierte ID in AutoIncrementIDRet zurückgegeben.
Der VSPECMYSQL MySQLHandle wird von @MySQLInit geliefert.
Return:
Im Erfolgsfall TRUE andernfalls @Error;
Beispiel: @MySQLQuery(MySQLHandle;QueryStr;MySQLResultHandle);
MySQLh:=@MySQLInit;
MySQLError:=1;
IF(@IsError(MySQLh)){
@LogReport(MySQLh;3);
}ELSE{
@MySQLOptions(MySQLh);
MySQLUser:="MySQLConnectorUser";
MySQLPassword:="ConnectorPassword";
MySQLDefaultDatabase:="testdb";
MySQLHost:="mysql.intranet";
Ret:=@MySQLConnect(MySQLh;MySQLHost;MySQLUser;MySQLPassword;MySQLDefaultDatabase);
IF(@IsError(Ret)){
@LogReport(Ret);
}ELSE{
MySQLError:=0;}
IF(!MySQLError){
QueryStr:="SELECT ID,Name,Amount,UID FROM testdb.amounts WHERE Name=\"Test User\";";
Ret:=@MySQLQuery(MySQLh;QueryStr;MySQLResH);
NumRows:=@MySQLGetNumRows(MySQLResH);
IF(NumRows=1){
Ret:=@MySQLFetchRow(MySQLResH;1;ThisQueryID;ThisQueryName;ThisQueryAmount;ThisQueryUID);
}ELSE{
ThisQueryID:=-1;
ThisQueryAmount:=0;
ThisQueryName:=ThisQueryUID:="";
}
MySQLResH:=@MySQLFreeResult(MySQLResH);
@LogReport("ThisQueryID :"+@Text(ThisQueryID);3);
@LogReport("ThisQueryName :"+ThisQueryName;3);
@LogReport("ThisQueryAmount:"+@Text(ThisQueryAmount);3);
@LogReport("ThisQueryUID :"+ThisQueryUID;3);
}
MySQLh:=@MySQLClose(MySQLh);
}
@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.
