Обсуждение статьи "Работа с СУБД MySQL из MQL5 (MQL4)" - страница 20

 
Dmitry Melnichenko:

создал нового пользователя, пробовал подключится под его реквизитами, не помогло!

тогда маловероятно что это проблема MySQL или организации базы, то есть явно некий баг или в советнике/скрипте или интерфейсной библиотеке.

Вы можете свести пример где сие проявляется к минимуму ? чтобы можно было продемонстрировать короткий код, и тут в ветке форума выяснять его проблемы

 
Maxim Kuznetsov:

тогда маловероятно что это проблема MySQL или организации базы, то есть явно некий баг или в советнике/скрипте или интерфейсной библиотеке.

Вы можете свести пример где сие проявляется к минимуму ? чтобы можно было продемонстрировать короткий код, и тут в ветке форума выяснять его проблемы

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, ": не удалось открыть позицию. Ошибка ", 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;
}
 
а у вас MQL4 или 5 ??
 
Maxim Kuznetsov:
а у вас MQL4 или 5 ??
MQL4
 
Dmitry Melnichenko:
MQL4
и ошибка только при закрытии курсора, то есть все записи выдёргиваются нормально, а в конце выскакивает такая ерунда?
 
Maxim Kuznetsov:
и ошибка только при закрытии курсора, то есть все записи выдёргиваются нормально, а в конце выскакивает такая ерунда?
да, пишет что количество выбранных строк(выводил в Print), но при закрытии курсора пишет такую ошибку
 
Amy Liu:

Здравствуйте, Евгений,

Извините за поздний ответ. Вот что я сделал с вашим кодом. Я просто модифицировал одну функцию cMySqlGetRowField для использования MultiByteToWideChar. Оригинальный код закомментирован для сравнения.

Спасибо, ребята, вы молодцы. Я попробовал ваш код .Не забудьте включить widechar голову, или это не будет работать.

#include <wchar.h>



 

Здравствуйте учитель, я использую программное обеспечение mt4, локальная система win10 с помощью ea для подключения mysql может быть использован нормально, но положить в win2008 сервер не будет работать, было предложено '... \libraries\MQLMySQL.dll' не загружен... ...' ошибка.

Я скачал все версии, включая mt4, mt5, 64bit, 32bit, но все равно не работает. Что мне делать?

 

Здравствуйте, я загрузил dll в папку Libraries, но она сообщает об ошибке ""Cnnot call 'cMySqlVersion', '....\Libraries\MQLMySQL.dll' is not loaded.

Как это возможно?

 
GreenKobra:

Привет Я загрузил dll в папку Libraries, но он сообщает об ошибке ""Cnnot call 'cMySqlVersion', '....\Libraries\MQLMySQL.dll' is not loaded

Как такое возможно?

У меня та же проблема, что и у вас.

Использую MT5 с Windows 10 - 64bits.