Discussão do artigo "Como acessar o banco de dados MySQL a partir do MQL5 (MQL4)" - página 2

 

Obrigado por essa nova abordagem! Tentei soluções diferentes, mas esta parece ser a melhor até agora. Fiz uma pequena adição à sua biblioteca em que retorno o número de campos para uma consulta SELECT, usando mysql_num_fields, para que eu saiba quantos campos preciso processar e retornar no lado MQL. Mais uma vez, muito obrigado por ter elaborado tudo isso, realmente ajudou!

Código MQL:

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

Obrigado por essa nova abordagem! Tentei soluções diferentes, mas esta parece ser a melhor até agora. Fiz uma pequena adição à sua biblioteca em que retorno o número de campos para uma consulta SELECT, usando mysql_num_fields, para que eu saiba quantos campos preciso processar e retornar no lado MQL. Mais uma vez, muito obrigado por ter organizado tudo isso, realmente ajudou!

Obrigado pelas palavras gentis. É uma solução básica e mantém a funcionalidade geral que estou usando na realidade.

Usei as seguintes regras durante o desenvolvimento desta solução: robustez, facilidade de estudo, simplicidade de uso e suporte mínimo.

É claro que você pode alterar este projeto e adicionar outras funções de acordo com as necessidades do seu projeto.

Boa sorte,

Eugênio

 

Olá amigos,

Bem, se você gosta dessa solução e está tentando usá-la em projetos reais (não apenas por diversão), tenho uma atualização.

Estou começando a escrever um novo artigo sobre como trabalhar com diferentes bancos de dados, como MS SQL Server, MS Access, Oracle, IBM DB/2, PostgreSQL.

A decisão seria robusta e fácil de usar como esta, mas não tenho tempo para concluí-la.

Portanto, se você quiser apoiar esse projeto, pode enviar alguns dólares por paypal para mim: e.a.lugovoy@gmail.com

O valor da quantia não importa, apenas gostaria de saber se essa decisão realmente precisa ser concluída.

Obrigado a todos,

Eugênio

 

Olá,EugeniyLugovoy~


Quero saber por que o comando ' MySqlGetFieldAsDouble(Cursor, 3);' não consegue gravar seu valor em data[i]?


Print("data[i]",data[3]);-- sempre exibe 0,0. o que está errado ? obrigado, senhor!



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

{

double data[] ;

ArrayResize(data,Rows);

dados[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:

Olá amigos,

Bem, se você gosta dessa solução e está tentando usá-la em projetos reais (não apenas por diversão), tenho uma atualização.

Estou começando a escrever um novo artigo sobre como trabalhar com diferentes bancos de dados, como MS SQL Server, MS Access, Oracle, IBM DB/2, PostgreSQL.

A decisão seria robusta e fácil de usar como esta, mas não tenho tempo para concluí-la.

Portanto, se você quiser apoiar esse projeto, pode enviar alguns dólares por paypal para mim: e.a.lugovoy@gmail.com

O valor não importa, apenas gostaria de saber se essa decisão realmente precisa ser concluída.

Obrigado a todos,

Eugênio

Às vezes, a matriz é necessária - por exemplo, precisamos combinar os dados com uma data específica (do tique) - pode estar relacionada ao algoritmo que é conveniente para fazê-lo na matriz do que no MYSQL.
 
illman:

Olá,EugeniyLugovoy~

Quero saber por que o comando ' MySqlGetFieldAsDouble(Cursor, 3);' não consegue gravar seu valor em data[i]?

Print("data[i]",data[3]);-- sempre exibe 0,0. o que está errado ? obrigado, senhor!

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

if (MySqlCursorFetchRow(Cursor))

{

double data[] ;

ArrayResize(data,Rows);

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

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

Você está tentando definir a matriz todas as vezes no ciclo e imprimir um item de matriz vazio.

Tente isso:

// Acho que o Rows obtém o número de linhas já antes dessa solução alternativa.
double data[];
ArrayResize(data, Rows);  

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

// aqui você obterá o array "data" preenchido
Print("data[",3,"]",data[3]);

Portanto, você precisa definir a matriz uma vez antes de buscar o ciclo, redimensioná-la e, em seguida, escrever a rotina para obter os dados.

A propósito, o número 3 em MySqlGetFieldAsDouble(Cursor, 3); significa a quarta coluna na lista SELECT, porque a numeração começa com 0, ou seja, SELECT Open, High, Low, Close FROM ... significa 0 - Open, 1 - High, 2 - Low e 3 - Close.

Espero que isso possa ajudar.

Atenciosamente,

Eugênio

 
elugovoy:

Você está tentando definir a matriz todas as vezes no ciclo e imprimir um item de matriz vazio.

Tente isso:

Portanto, você precisa definir a matriz uma vez antes de buscar o ciclo, redimensioná-la e, em seguida, escrever a rotina para obter os dados.

A propósito, o número 3 em MySqlGetFieldAsDouble(Cursor, 3); significa a quarta coluna na lista SELECT, porque a numeração começa com 0, ou seja, SELECT Open, High, Low, Close FROM ... significa 0 - Open, 1 - High, 2 - Low e 3 - Close.

Espero que isso possa ajudar.

Atenciosamente,

Eugênio

Obrigado por ajudar o senhor ,Eu resolvi meus problemas sobre a matriz。Você fez um bom trabalho no mysql-mql, de fato~!

 
Para MetaTrader5 x64 utilize a seguinte biblioteca (anexado na discussão):
Arquivos anexados:
[Excluído]  

Olá elugovoy

Excelente artigo e ótimas bibliotecas.

Estou tentando usar seus exemplos no MT5, mas estou recebendo este erro:

2014.12.15 15:44:16.387 MySQL-001 'C:\Users\....\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\libraries\MQLMySQL.dll' não é uma versão de 64 bits

Você está executando o MT5 em ambiente de 32 bits?

Poderia me ajudar com isso, por favor?

Muito obrigado!

Carmine Marrone.

 
carmine.marrone:

Olá elugovoy

Excelente artigo e ótimas bibliotecas.

Estou tentando usar seus exemplos no MT5, mas estou recebendo este erro:

2014.12.15 15:44:16.387 MySQL-001 'C:\Users\....\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\libraries\MQLMySQL.dll' não é uma versão de 64 bits

Você está executando o MT5 em ambiente de 32 bits?

Poderia me ajudar com isso, por favor?

Muito obrigado!

Carmine Marrone.

Olá, Carmine

Para a discussão acima, anexei um projeto para x64, dê uma olhada e/ou faça o download nesta postagem.

Espero que isso ajude.

Atenciosamente,

Eugênio

Arquivos anexados: