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

 

이 새로운 접근 방식에 감사드립니다! 여러 가지 해결책을 시도해 보았지만 지금까지는 이 방법이 가장 좋은 것 같습니다. MQL 측에서 처리하고 반환해야하는 필드 수를 알 수 있도록 mysql_num_fields를 사용하여 SELECT 쿼리에 대한 필드 수를 반환하는 라이브러리를 약간 추가했습니다. 이 문제를 정리해 주셔서 다시 한 번 감사드립니다. 정말 도움이되었습니다!

MQL 코드:

int fields = MySqlNumFields(cursor);
for (int j=0; j<fields;j++)
{
    data[j] = MySqlGetFieldAsString(cursor, j);
}
 
sokramm:

이 새로운 접근 방식에 감사드립니다! 여러 가지 해결책을 시도해 보았지만 지금까지는 이 방법이 가장 좋은 것 같습니다. MQL 측에서 처리하고 반환해야하는 필드 수를 알 수 있도록 mysql_num_fields를 사용하여 SELECT 쿼리에 대한 필드 수를 반환하는 라이브러리를 약간 추가했습니다. 이것을 정리해 주셔서 다시 한 번 감사드립니다. 정말 도움이되었습니다!!!

친절한 말씀 감사합니다. 기본 솔루션이며 실제로 사용하고있는 일반적인 기능을 유지합니다.

이 솔루션을 개발하는 동안 다음 규칙을 사용했습니다 : 견고성, 공부하기 쉬움, 간단한 사용 및 최소한의 지원.

물론 이 프로젝트를 변경하고 프로젝트에 필요한 기능을 추가할 수도 있습니다.

행운을 빕니다,

Eugene

 

안녕하세요, 친구 여러분,

이 솔루션이 마음에 드시고 실제 프로젝트에 사용해 보신다면 (재미로만 사용하는 것이 아니라) 업데이트가 있습니다.

MS SQL 서버, MS 액세스, 오라클, IBM DB / 2, PostgreSQL과 같은 다양한 데이터베이스 작업에 대한 새로운 기사를 작성하기 시작했습니다.

이 글처럼 강력하고 사용하기 쉬운 글을 쓰고 싶지만 시간이 없어서 아직 완성하지 못했습니다.

따라서 이 프로젝트를 지원하고 싶으시면 페이팔로 몇 달러를 보내 주시면 됩니다: e.a.lugovoy@gmail.com

금액은 중요하지 않으며, 이러한 결정이 정말 완료되어야하는지 알고 싶습니다.

모두 감사합니다,

Eugene

 

안녕하세요, 유지니루고보이~!


왜 ' MySqlGetFieldAsDouble(Cursor, 3);'이 데이터[i]에 값을 쓸 수 없는지 알고싶어요?


Print("data[i]",data[3]);--항상 0.0을 표시합니다. 무슨 문제인가요? 감사합니다!



for (i=0; i<Rows; i++)
if (MySqlCursorFetchRow(Cursor))

{

double data[] ;

ArrayResize(data,Rows);

data[i]= MySqlGetFieldAsDouble(Cursor, 3);

Print("data[i]",data[3]);
}

Person - schema.org
  • schema.org
PropertyExpected TypeDescription Properties from Person The Global Location Number (GLN, sometimes also referred to as International Location Number or ILN) of the respective organization, person, or place. The GLN is a 13-digit number used to identify parties and physical locations. A count of a specific user interactions...
 
elugovoy:

안녕하세요, 친구 여러분,

이 솔루션이 마음에 드시고 실제 프로젝트에 사용해 보신다면 (재미로만 사용하는 것이 아니라) 업데이트가 있습니다.

MS SQL 서버, MS 액세스, 오라클, IBM DB / 2, PostgreSQL과 같은 다양한 데이터베이스 작업에 대한 새로운 기사를 작성하기 시작했습니다.

이 글처럼 강력하고 사용하기 쉬운 글을 쓰고 싶지만 시간이 없어서 아직 완성하지 못했습니다.

따라서 이 프로젝트를 지원하고 싶으시면 페이팔로 몇 달러를 보내 주시면 됩니다: e.a.lugovoy@gmail.com

금액은 중요하지 않으며, 이러한 결정이 정말 완료되어야하는지 알고 싶습니다.

모두 감사합니다,

Eugene

때때로 배열이 필요합니다- 예를 들어, 데이터를 특정 날짜 (틱의)에 일치시켜야합니다- 그것은 MYSQL보다 배열로 만드는 것이 편리한 알고리즘과 관련이있을 수 있습니다。저에게 도움을 주실 수 있습니까?
 
illman:

안녕하세요, 유지니루고보이~!

왜 ' MySqlGetFieldAsDouble(Cursor, 3);'이 데이터[i]에 값을 쓸 수 없는지 알고 싶어요?

Print("data[i]",data[3]);--항상 0.0을 표시합니다. 무슨 문제인가요? 감사합니다!

for (i=0; i<Rows; i++)

if (MySqlCursorFetchRow(Cursor))

{

double data[] ;

ArrayResize(data,Rows);

data[i]= MySqlGetFieldAsDouble(Cursor, 3);

Print("data[i]",data[3]);
}

매 주기마다 배열을 정의하고 빈 배열 항목을 인쇄하려고 합니다.

이렇게 해보세요:

// 이 해결 방법 이전에 이미 행 수를 가져온 것 같습니다.
double data[];
ArrayResize(data, Rows);  

for (i=0; i<Rows; i++)
    {
     if (MySqlCursorFetchRow(Cursor))
        {
          data[i]= MySqlGetFieldAsDouble(Cursor, 3);
        }
    }

// 여기에 "데이터" 배열이 채워집니다.
Print("data[",3,"]",data[3]);

따라서 주기를 불러오기 전에 배열을 한 번 정의한 다음 크기를 조정하고 데이터를 가져오는 루틴을 작성해야 합니다.

참고로 MySqlGetFieldAsDouble(Cursor, 3); 의 숫자 3은 숫자가 0으로 시작하기 때문에 SELECT 목록의 네 번째 열을 의미합니다 (예 : SELECT Open, High, Low, Close FROM ...은 0 - Open, 1 - High, 2 - Low 및 3 - Close 의미합니다.

도움이 되었기를 바랍니다.

안부 전해주세요,

Eugene

 
elugovoy:

매 사이클마다 배열을 정의하고 빈 배열 항목을 인쇄하려고 합니다.

이렇게 해보세요:

따라서 주기를 가져오기 전에 배열을 한 번 정의한 다음 크기를 조정하고 데이터를 가져오는 루틴을 작성해야 합니다.

참고로 MySqlGetFieldAsDouble(Cursor, 3); 의 숫자 3은 숫자가 0으로 시작하기 때문에 SELECT 목록의 네 번째 열을 의미합니다 (예 : SELECT Open, High, Low, Close FROM ...은 0 - Open, 1 - High, 2 - Low 및 3 - Close 의미합니다.

도움이 되었기를 바랍니다.

안부 전해주세요,

유진

감사합니다 도와 주셔서 감사합니다 , 배열에 대한 내 문제를 해결했습니다。 당신은 실제로 mysql-mql에서 좋은 일을 했어요 ~!

 
메타트레이더5 x64의 경우 다음 라이브러리(토론에 첨부)를 사용합니다:
 

안녕하세요 엘루고보이

멋진 기사와 훌륭한 라이브러리입니다.

MT5에서 예제를 사용하려고하는데이 오류가 발생합니다:

2014.12.15 15:44:16.387 MySQL-001 'C:\사용자\....\앱데이터\로밍\MetaQuotes\터미널\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\libraries\MQLMySQL.dll' 64비트 버전이 아닙니다.

32비트 환경에서 MT5를 실행하고 계신가요?

도와주시겠어요?

정말 감사합니다!

카민 마론.

 
carmine.marrone:

안녕하세요 엘루고보이

멋진 기사와 훌륭한 라이브러리입니다.

MT5에서 예제를 사용하려고하는데이 오류가 발생합니다:

2014.12.15 15:44:16.387 MySQL-001 'C:\사용자\....\앱데이터\로밍\MetaQuotes\터미널\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\libraries\MQLMySQL.dll' 64비트 버전이 아닙니다.

32비트 환경에서 MT5를 실행하고 계신가요?

도와주시겠어요?

정말 감사합니다!

카민 마론

안녕하세요 카마인

위의 토론에서 x64 용 프로젝트를 첨부 했으므로이 게시물에서 보거나 다운로드하십시오.

이것이 도움이 되었기를 바랍니다.

Regards,

Eugene