Discussion de l'article "Comment accéder à la base de données MySQL à partir de MQL5 (MQL4)" - page 2

 

Merci pour cette nouvelle approche ! J'ai essayé différentes solutions, mais celle-ci me semble la meilleure jusqu'à présent. J'ai fait un ajout mineur à votre bibliothèque où je retourne le nombre de champs pour une requête SELECT, en utilisant mysql_num_fields, de sorte que je sache combien de champs je dois traiter et retourner dans le côté MQL. Merci beaucoup encore d'avoir mis cela au point, cela m'a vraiment aidé !

Code MQL :

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

Merci pour cette nouvelle approche ! J'ai essayé différentes solutions, mais celle-ci me semble la meilleure jusqu'à présent. J'ai fait un ajout mineur à votre bibliothèque où je retourne le nombre de champs pour une requête SELECT, en utilisant mysql_num_fields, de sorte que je sache combien de champs je dois traiter et retourner dans le côté MQL. Merci beaucoup encore d'avoir mis tout cela au point, cela m'a vraiment aidé !

Merci pour vos bons mots. Il s'agit d'une solution de base qui conserve la fonctionnalité générale que j'utilise en réalité.

J'ai utilisé les règles suivantes pendant le développement de cette solution : robustesse, facilité d'étude, simplicité d'utilisation et support minimal.

Bien sûr, vous pouvez modifier ce projet et ajouter des fonctions supplémentaires en fonction des besoins de votre projet.

Je vous souhaite bonne chance,

Eugène

 

Bonjour les amis,

Si vous aimez cette solution et que vous l'essayez pour des projets réels (pas seulement pour le plaisir), j'ai une mise à jour.

Je commence à écrire un nouvel article sur le travail avec différentes bases de données, telles que MS SQL Server, MS Access, Oracle, IBM DB/2, PostgreSQL.

La décision serait robuste et facile à utiliser comme celle-ci, mais je n'ai pas le temps de la terminer.

Donc, si vous voulez soutenir ce projet, vous pouvez m'envoyer quelques $$ par paypal : e.a.lugovoy@gmail.com

Le montant de la somme n'a pas d'importance, j'aimerais juste savoir si une telle décision a vraiment besoin d'être complétée.

Merci à tous,

Eugène

 

Bonjour,EugeniyLugovoy~


Je voudrais savoir pourquoi ' MySqlGetFieldAsDouble(Cursor, 3);' ne peut pas écrire sa valeur dans data[i]?


Print("data[i]",data[3]);--Toujours 0.0. Qu'est ce qui ne va pas ? merci monsieur!



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:

Bonjour les amis,

Si vous aimez cette solution et que vous l'essayez pour des projets réels (pas seulement pour le plaisir), j'ai une mise à jour.

Je commence à écrire un nouvel article sur le travail avec différentes bases de données, telles que MS SQL Server, MS Access, Oracle, IBM DB/2, PostgreSQL.

La décision serait robuste et facile à utiliser comme celle-ci, mais je n'ai pas le temps de la terminer.

Donc, si vous voulez soutenir ce projet, vous pouvez m'envoyer quelques $$ par paypal : e.a.lugovoy@gmail.com

Le montant de la somme n'a pas d'importance, j'aimerais juste savoir si une telle décision a vraiment besoin d'être complétée.

Merci à tous,

Eugène

Parfois, un tableau est nécessaire - par exemple , nous devons faire correspondre les données à une date précise(du tick) - cela peut être lié à l'algorithme qui est plus pratique de le faire dans un tableau que dans MYSQL。pouvez-vous m'aider monsieur?Merci beaucoup~!
 
illman:

Bonjour,EugeniyLugovoy~

Je voudrais savoir pourquoi ' MySqlGetFieldAsDouble(Cursor, 3);' ne peut pas écrire sa valeur dans data[i]?

Print("data[i]",data[3]);--Toujours 0.0. Qu'est ce qui ne va pas ? merci monsieur!

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

if (MySqlCursorFetchRow(Cursor))

{

double data[] ;

ArrayResize(data,Rows) ;

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

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

Vous essayez de définir un tableau à chaque fois dans le cycle et d'imprimer un élément de tableau vide.

Essayez ceci :

// Je suppose que le nombre de rangs est déjà obtenu avant ce contournement.
double data[];
ArrayResize(data, Rows);  

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

// vous obtiendrez ici un tableau rempli "data"
Print("data[",3,"]",data[3]);

Vous devez donc définir le tableau une fois avant de récupérer le cycle, puis le redimensionner, et enfin écrire la routine pour récupérer les données.

À propos, le chiffre 3 dans MySqlGetFieldAsDouble(Cursor, 3) ; signifie la quatrième colonne dans la liste SELECT, car la numération commence par 0, c'est-à-dire que SELECT Open, High, Low, Close FROM ... signifie 0 - Open, 1 - High, 2 - Low et 3 - Close.

J'espère que cela vous aidera.

Je vous prie d'agréer, Monsieur, l'expression de mes salutations distinguées,

Eugène

 
elugovoy:

Vous essayez de définir un tableau à chaque fois dans le cycle et d'imprimer un élément de tableau vide.

Essayez ceci :

Vous devez donc définir le tableau une fois avant le cycle de récupération, puis le redimensionner et enfin écrire une routine pour récupérer les données.

Au fait, le chiffre 3 dans MySqlGetFieldAsDouble(Cursor, 3) ; signifie la quatrième colonne dans la liste SELECT, car la numération commence par 0, c'est-à-dire que SELECT Open, High, Low, Close FROM ... signifie 0 - Open, 1 - High, 2 - Low et 3 - Close.

J'espère que cela vous aidera.

Je vous prie d'agréer, Monsieur, l'expression de mes salutations distinguées,

Eugène

Merci pour avoir aidé monsieur ,J'ai résolu mes problèmes à propos du tableau。Vous avez fait un bon travail sur mysql-mql en effet~!

 
Pour MetaTrader5 x64, utilisez la bibliothèque suivante (jointe à la discussion) :
[Supprimé]  

Bonjour elugovoy

Superbe article et superbes librairies.

J'essaie d'utiliser vos exemples sous MT5 mais j'obtiens cette erreur :

2014.12.15 15:44:16.387 MySQL-001 'C:\Users\....\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\libraries\MQLMySQL.dll' n'est pas une version 64 bits.

Est-ce que vous utilisez MT5 sous un environnement 32-bit ?

Pourriez-vous m'aider ?

Merci beaucoup !

Carmine Marrone.

 
carmine.marrone:

Bonjour elugovoy

Superbe article et superbes librairies.

J'essaie d'utiliser vos exemples sous MT5 mais j'obtiens cette erreur :

2014.12.15 15:44:16.387 MySQL-001 'C:\Users\....\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\libraries\MQLMySQL.dll' n'est pas une version 64 bits.

Est-ce que vous utilisez MT5 sous un environnement 32-bit ?

Pourriez-vous m'aider ?

Merci beaucoup !

Carmine Marrone.

Bonjour Carmine

J'ai joint le projet pour x64 à la discussion ci-dessus, jetez-y un coup d'œil et/ou téléchargez-le à partir de ce message.

J'espère que cela vous aidera.

Je vous prie d'agréer, Monsieur, mes salutations distinguées,

Eugène