기고글 토론 "MQL5(MQL4)에서 MySQL 데이터베이스에 액세스하는 방법" - 페이지 20

 
Dmitry Melnichenko:

새 사용자를 만들고 그의 세부 정보로 연결을 시도했지만 도움이되지 않았습니다!

그렇다면 이것은 MySQL 또는 데이터베이스 구성의 문제일 가능성이 높습니다. 즉, EA/스크립트 또는 인터페이스 라이브러리에 분명히 버그가 있는 것입니다.

이 문제가 최소화되는 예시를 보여 주실 수 있나요? 짧은 코드를 시연하고 여기 포럼 스레드에서 문제를 찾을 수 있도록 도와주세요.

 
Maxim Kuznetsov:

이면 MySQL 또는 데이터베이스 구성의 문제, 즉 EA/스크립트 또는 인터페이스 라이브러리의 버그일 가능성이 높습니다.

이 문제가 최소화 된 예를 들어 주시겠습니까? 짧은 코드를 시연 한 다음 여기 포럼 스레드에서 문제를 찾을 수 있습니다.

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:
그리고 오류는 커서를 닫을 때만, 즉 모든 레코드가 정상적으로 꺼져 있지만 마지막에이 넌센스가 팝업됩니까?
예, 선택한 행 수 (인쇄인쇄 됨)를 기록하지만 커서를 닫을 때이 오류가 기록됩니다.
 
Amy Liu:

안녕하세요 유지니,

답변이 늦어서 죄송합니다. 다음은 제가 코드를 수정한 내용입니다.MultiByteToWideChar를 사용하도록 cMySqlGetRowField 함수 하나를 수정했습니다. 원본 코드는 비교를 위해 주석 처리되어 있습니다.

감사합니다. 나는 당신의 코드를 시도했습니다 .와이드 문자 헤드를 포함하지 않으면 작동하지 않습니다.

#include <wchar.h>



 

안녕하세요 선생님, 저는 mt4 소프트웨어를 사용하고 있으며, ea를 사용하여 mysql을 연결하는 로컬 win10 시스템은 정상적으로 사용할 수 있지만 win2008 서버에 넣으면 작동하지 않고 '... \라이브러리\MQLMySQL.dll'이 로드되지 않았습니다.... ...' 오류가 발생합니다.

mt4, mt5, 64비트, 32비트를 포함한 모든 버전을 다운로드했지만 여전히 작동하지 않습니다. 어떻게 해야 하나요?

 

안녕하세요 라이브러리 폴더에 dll을로드했지만 오류를보고합니다." " 'cMySqlVersion'을 호출하지 않음, '....\Libraries\MQLMySQL.dll'이로드되지 않았습니다.

어떻게 가능한가요?

 
GreenKobra:

안녕하세요, 라이브러리 폴더에 dll을로드했지만 오류가보고됩니다." " 'cMySqlVersion'을 호출 할 수 없음, '....\Libraries\MQLMySQL.dll'이로드되지 않았습니다.

어떻게 가능한가요?

저도 여러분과 같은 문제가 있습니다.

Windows 10 - 64비트에서 MT5를 사용 중입니다.