Diskussion zum Artikel "Wie man auf die MySQL-Datenbank von MQL5 (MQL4) aus zugreift" - Seite 20

 
Dmitry Melnichenko:

Ich habe einen neuen Benutzer angelegt und versucht, mich mit seinen Daten zu verbinden, aber es hat nicht geholfen!

dann ist es unwahrscheinlich, dass es sich um ein Problem von MySQL oder der Datenbankorganisation handelt, d.h. es liegt offensichtlich ein Fehler entweder im EA/Skript oder in der Schnittstellenbibliothek vor.

Können Sie mir ein Beispiel geben, bei dem dies minimiert wird, damit ich einen kurzen Code demonstrieren und die Probleme hier in einem Forumsthread herausfinden kann.

 
Maxim Kuznetsov:

dann ist es unwahrscheinlich, dass es sich um ein Problem von MySQL oder der Datenbankorganisation handelt, d.h. offensichtlich um einen Fehler entweder im EA/Skript oder in der Schnittstellenbibliothek.

Können Sie ein Beispiel nennen, bei dem dies minimiert wird, so dass Sie einen kurzen Code demonstrieren können, und dann seine Probleme in einem Forumsthread hier herausfinden

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, ": Eine Position konnte nicht eröffnet werden. Fehler ", 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;
}
 
Haben Sie MQL4 oder MQL5?
 
Maxim Kuznetsov:
haben Sie MQL4 oder 5???
MQL4
 
Dmitry Melnichenko:
MQL4
und der Fehler tritt nur beim Schließen des Cursors auf, d. h. alle Datensätze werden normal herausgezogen, aber am Ende erscheint dieser Unsinn?
 
Maxim Kuznetsov:
und der Fehler tritt nur beim Schließen des Cursors auf, d.h. alle Datensätze werden normal herausgezogen, aber am Ende erscheint dieser Unsinn?
Ja, es schreibt, dass die Anzahl der ausgewählten Zeilen ( in Print gedruckt), aber beim Schließen des Cursors schreibt es diesen Fehler.
 
Amy Liu:

Hallo Eugeniy,

Entschuldigung für die späte Antwort. Hier ist, was ich mit Ihrem Code getan habe. Ich habe nur eine Funktion cMySqlGetRowField geändert , um MultiByteToWideChar zu verwenden . Der ursprüngliche Code ist zum Vergleich kommentiert.

Danke, ihr seid großartig. Ich habe Ihren Code ausprobiert, aber vergessen Sie nicht den widechar Kopf, sonst funktioniert es nicht.

#include <wchar.h>



 

Hallo Lehrer, ich bin mit mt4 Software, lokale win10 System mit ea zu verbinden mysql kann normal verwendet werden, aber in win2008 Server setzen wird nicht funktionieren, wurde aufgefordert '... \libraries\MQLMySQL.dll' ist nicht geladen... ...' Fehler.

Ich habe alle Versionen heruntergeladen, einschließlich mt4, mt5, 64bit, 32bit, aber es funktioniert immer noch nicht. Was sollte ich tun?

 

Hallo, ich habe die dll in den Ordner "Libraries" geladen, aber es wird ein Fehler gemeldet: "Cnnot call 'cMySqlVersion', '....\Libraries\MQLMySQL.dll' is not loaded

Wie ist das möglich?

 
GreenKobra:

Hallo ich habe dll in Libraries-Ordner geladen, aber es Bericht ein Fehler " "Cnnot Aufruf 'cMySqlVersion', '....\Libraries\MQLMySQL.dll' ist nicht geladen

Wie ist das möglich?

Ich habe das gleiche Problem wie Sie.

Mit MT5 mit Windows 10 - 64bits.