Diskussion zum Artikel "Wie man auf die MySQL-Datenbank von MQL5 (MQL4) aus zugreift" - Seite 2

 

Vielen Dank für diesen neuen Ansatz! Ich habe verschiedene Lösungen ausprobiert, aber diese scheint bisher die beste zu sein. Ich habe eine kleine Ergänzung zu Ihrer Bibliothek, wo ich die Anzahl der Felder für eine SELECT-Abfrage, mit mysql_num_fields, so dass ich weiß, wie viele Felder muss ich verarbeiten und zurück in die MQL-Seite. Nochmals vielen Dank für die Zusammenstellung, das hat wirklich geholfen!!

MQL-Code:

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

Vielen Dank für diesen neuen Ansatz! Ich habe verschiedene Lösungen ausprobiert, aber diese scheint bisher die beste zu sein. Ich habe eine kleine Ergänzung zu Ihrer Bibliothek, wo ich die Anzahl der Felder für eine SELECT-Abfrage, mit mysql_num_fields, so dass ich weiß, wie viele Felder, die ich brauchen, um zu verarbeiten und zurück in der MQL-Seite. Nochmals vielen Dank für die Zusammenstellung, das hat wirklich geholfen!!

Danke für die freundlichen Worte. Es ist eine einfache Lösung, die die allgemeine Funktionalität beibehält, die ich in Wirklichkeit verwende.

Bei der Entwicklung dieser Lösung habe ich die folgenden Regeln beachtet: Robustheit, leichte Erlernbarkeit, einfache Anwendung und minimaler Support.

Natürlich können Sie dieses Projekt ändern und zusätzliche Funktionen hinzufügen, die Ihren Projektanforderungen entsprechen.

Viel Glück!

Eugene

 

Hallo Freunde,

Nun, wenn Ihnen diese Lösung gefällt und Sie sie für reale Projekte ausprobieren möchten (nicht nur zum Spaß), habe ich ein Update.

Ich fange an, einen neuen Artikel über die Arbeit mit verschiedenen Datenbanken zu schreiben, wie MS SQL Server, MS Access, Oracle, IBM DB/2, PostgreSQL.

Die Entscheidung wäre robust und einfach zu benutzen wie dieser, aber ich habe keine Zeit, ihn fertigzustellen.

Also, wenn Sie dieses Projekt unterstützen wollen, können Sie mir ein paar $$ über paypal schicken: e.a.lugovoy@gmail.com

Die Höhe der Summe spielt keine Rolle, ich möchte nur wissen, ob eine solche Entscheidung wirklich fertiggestellt werden muss.

Ich danke Ihnen allen,

Eugene

 

hello,EugeniyLugovoy~


Ich möchte wissen, warum ' MySqlGetFieldAsDouble(Cursor, 3);' seinen Wert nicht in data[i]?schreiben kann .


Print("data[i]",data[3]);--immer 0.0. was ist falsch ? danke Sir!



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:

Hallo Freunde,

Nun, wenn Ihnen diese Lösung gefällt und Sie sie für reale Projekte ausprobieren möchten (nicht nur zum Spaß), habe ich ein Update.

Ich fange an, einen neuen Artikel über die Arbeit mit verschiedenen Datenbanken zu schreiben, wie MS SQL Server, MS Access, Oracle, IBM DB/2, PostgreSQL.

Die Entscheidung wäre robust und einfach zu benutzen wie dieser, aber ich habe keine Zeit, ihn fertigzustellen.

Also, wenn Sie dieses Projekt unterstützen wollen, können Sie mir ein paar $$ über paypal schicken: e.a.lugovoy@gmail.com

Die Höhe der Summe spielt keine Rolle, ich möchte nur wissen, ob eine solche Entscheidung wirklich fertiggestellt werden muss.

Ich danke Ihnen allen,

Eugene

in manchmal, Array ist notwendig--zum Beispiel ,wir brauchen, um die Daten zu einem bestimmten Datum(der tick)-es kann sich auf Algorithmus, der bequem ist, um es in Array als MYSQL。kannst du mir eine Hilfe Sir?thanks a lot~!
 
illman:

hello,EugeniyLugovoy~

Ich möchte wissen, warum 'MySqlGetFieldAsDouble(Cursor, 3);' seinen Wert nicht in data[i]? schreiben kann.

Print("data[i]",data[3]);--immer 0.0. was ist falsch ? danke Sir!

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

if (MySqlCursorFetchRow(Cursor))

{

double data[] ;

ArrayResize(data,Rows);

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

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

Sie versuchen, jedes Mal im Zyklus ein Array zu definieren und ein leeres Array-Element zu drucken.

Versuchen Sie dies:

// Ich vermute, dass die Rows die Anzahl der Zeilen bereits vor dieser Umgehung erhält.
double data[];
ArrayResize(data, Rows);  

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

// hier erhalten Sie das gefüllte Array "data"
Print("data[",3,"]",data[3]);

Sie müssen also das Array einmal vor dem Abholen des Zyklus definieren, dann die Größe ändern und dann die Routine zum Abrufen der Daten schreiben.

Übrigens, die Zahl 3 in MySqlGetFieldAsDouble(Cursor, 3); bedeutet die 4. Spalte in der SELECT-Liste, weil die Nummerierung mit 0 beginnt, d.h. SELECT Open, High, Low, Close FROM ... bedeutet 0 - Open, 1 - High, 2 - Low und 3 - Close.

Ich hoffe, das hilft Ihnen weiter.

Mit freundlichen Grüßen,

Eugene

 
elugovoy:

Sie versuchen, jedes Mal im Zyklus ein Array zu definieren und ein leeres Array-Element zu drucken.

Versuchen Sie dies:

Sie müssen also das Array einmal vor dem Abruf des Zyklus definieren, dann die Größe ändern und dann die Routine für den Datenabruf schreiben.

Übrigens, die Zahl 3 in MySqlGetFieldAsDouble(Cursor, 3); bedeutet die 4. Spalte in der SELECT-Liste, weil die Nummerierung mit 0 beginnt, d.h. SELECT Open, High, Low, Close FROM ... bedeutet 0 - Open, 1 - High, 2 - Low und 3 - Close.

Ich hoffe, das hilft Ihnen weiter.

Mit freundlichen Grüßen,

Eugene

Vielen Dank für Hilfe Sir ,Ich habe meine Probleme über das Array gelöst。Sie haben einen guten Job auf mysql-mql in der Tat~!

 
Für MetaTrader5 x64 verwenden Sie die folgende Bibliothek (in der Diskussion beigefügt):
[Gelöscht]  

Hallo elugovoy

Toller Artikel und tolle Bibliotheken.

Ich versuche deine Beispiele unter MT5 zu verwenden, aber ich bekomme diesen Fehler:

2014.12.15 15:44:16.387 MySQL-001 'C:\Users\....\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\libraries\MQLMySQL.dll' ist keine 64-bit Version

Führen Sie MT5 unter einer 32-Bit-Umgebung aus?

Könnten Sie mir bitte dabei helfen?

Herzlichen Dank!

Carmine Marrone.

 
carmine.marrone:

Hallo elugovoy

Toller Artikel und tolle Bibliotheken.

Ich versuche deine Beispiele unter MT5 zu verwenden, aber ich bekomme diesen Fehler:

2014.12.15 15:44:16.387 MySQL-001 'C:\Users\....\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\libraries\MQLMySQL.dll' ist keine 64-bit Version

Führen Sie MT5 unter einer 32-Bit-Umgebung aus?

Könnten Sie mir bitte dabei helfen?

Herzlichen Dank!

Carmine Marrone.

Hallo Carmine

Die oben in der Diskussion habe ich Projekt für x64 beigefügt, werfen Sie einen Blick und / oder Download von diesem Beitrag.

Hoffentlich hilft das.

Mit freundlichen Grüßen,

Eugene