Discussion de l'article "Comment accéder à la base de données MySQL à partir de MQL5 (MQL4)" - page 20

 
Dmitry Melnichenko:

J'ai créé un nouvel utilisateur, j'ai essayé de me connecter avec ses coordonnées, mais rien n'y a fait !

il est peu probable qu'il s'agisse d'un problème de MySQL ou d'organisation de la base de données, c'est-à-dire qu'il y a manifestement un bogue dans l'EA/script ou dans la bibliothèque de l'interface.

Pouvez-vous me donner un exemple où ce problème est minimisé, afin que je puisse faire la démonstration d'un code court et découvrir ses problèmes ici dans un fil de discussion.

 
Maxim Kuznetsov:

il est peu probable qu'il s'agisse d'un problème de MySQL ou d'organisation de la base de données, c'est-à-dire qu'il s'agit manifestement d'un bogue dans l'EA/script ou dans la bibliothèque de l'interface.

Pouvez-vous donner un exemple où ce problème est minimisé, afin que vous puissiez faire la démonstration d'un code court, et ensuite découvrir ses problèmes dans un fil de discussion ici.

if(connect >= 0)
   {
      string sql = SelectNewOrdersSQL();
      
      int Cursor1 = MySqlCursorOpen(connect, sql);
      
      if(Cursor1 >= 0)
      {
         int Rows = MySqlCursorRows(Cursor1);
         
         for(int i = 0; i < Rows; i++)
         {
            ResetLastError();
            
            if(MySqlCursorFetchRow(Cursor1))
            {
               int ticket = MySqlGetFieldAsInt(Cursor1, 0);
               string s = MySqlGetFieldAsString(Cursor1, 1);
               int order_type = MySqlGetFieldAsInt(Cursor1, 2);
               double lot = MySqlGetFieldAsDouble(Cursor1, 3);
               double open_price = MySqlGetFieldAsDouble(Cursor1, 4);
               
               string symbol = GetSymbol(s);
               
               Print(ticket);
               
               int digits = (int)SymbolInfoInteger(symbol, SYMBOL_DIGITS);
               int open_ticket = -1;
               if((open_ticket = OrderSend(symbol, order_type, NormalizeDouble(lot, 2), NormalizeDouble(open_price, digits), 150, 0, 0, (string)ticket)) <= 0)
               {
                  Print(symbol, " : échec de l'ouverture d'une position. Erreur ", GetLastError());
               }
               else
               {
                  MySqlExecute(connect, SqlModifyClient(ticket, open_ticket));
               }
            }
         }
         
         MySqlCursorClose(Cursor1);
      }
   }
string SelectNewOrdersSQL()
{
   string res = "SELECT Ticket, Symbol, OrderType, Lot, OpenPrice, StopLoss, TakeProfit ";
   res += "FROM orders (WHERE Client2 = 0 AND HistoryMaster = 0 AND Account = " + (string)MasterAccount;
   res += " AND Magic = " + (string)MasterMagic + ")";
   
   return res;
}
 
Avez-vous MQL4 ou 5 ?
 
Maxim Kuznetsov:
Avez-vous MQL4 ou 5 ????
MQL4
 
Dmitry Melnichenko:
MQL4
et l'erreur ne se produit que lors de la fermeture du curseur, c'est-à-dire que tous les enregistrements sont extraits normalement, mais à la fin, cette absurdité apparaît ?
 
Maxim Kuznetsov:
et l'erreur ne se produit que lors de la fermeture du curseur, c'est-à-dire que tous les enregistrements sont extraits normalement, mais que cette absurdité apparaît à la fin ?
Oui, il écrit le nombre de lignes sélectionnées (imprimé en Print), mais en fermant le curseur, il écrit cette erreur.
 
Amy Liu:

Bonjour Eugeniy,

Désolé pour cette réponse tardive. Voici ce que j'ai fait avec votre code. J'ai juste modifié une fonction cMySqlGetRowField pour utiliser MultiByteToWideChar. Le code original est commenté pour la comparaison.

Je vous remercie, vous êtes formidables. J'ai essayé votre code, mais n'oubliez pas d'inclure la tête widechar, sinon cela ne fonctionnera pas.

#include <wchar.h>



 

Bonjour professeur, j'utilise le logiciel mt4, le système local win10 utilisant ea pour connecter mysql peut être utilisé normalement, mais mis dans le serveur win2008 ne fonctionnera pas, a été invité '.... \libraries\MQLMySQL.dll' n'est pas chargé... ...'.

J'ai téléchargé toutes les versions, y compris mt4, mt5, 64bit, 32bit, mais cela ne fonctionne toujours pas. Que dois-je faire ?

 

Bonjour, j'ai chargé la dll dans le dossier Libraries mais il y a une erreur " "Cnnot call 'cMySqlVersion', '....\Libraries\MQLMySQL.dll' n'est pas chargé".

Comment cela est-il possible ?

 
GreenKobra:

Hi I have loaded dll in Libraries folder but it report an error " "Cnnot call 'cMySqlVersion', '....\Libraries\MQLMySQL.dll' is not loaded" (Je n'ai pas pu appeler 'cMySqlVersion', '....\Libraries\MQLMySQL.dll')

Comment est-ce possible ?

J'ai le même problème que vous.

J'utilise MT5 avec Windows 10 - 64bits.