記事"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クエリのフィールド数を返すように、このライブラリにちょっとした追加をしました。これをまとめてくれて本当にありがとう!

ありがとうございます。これは基本的なソリューションで、私が実際に使っている一般的な機能を 維持しています。

このソリューションの開発には、次のようなルールを採用しました:堅牢性、勉強のしやすさ、簡単な使用方法、最小限のサポート。

もちろん、このプロジェクトを変更して、あなたのプロジェクトのニーズに関する追加機能を追加することもできます。

幸運を祈る、

ユージン

 

こんにちは、

さて、もしあなたがこのソリューションを気に入って、実際のプロジェクトで試して いるのなら(単なる遊びではない)、私は最新情報を持っている。

MS SQL Server、MS Access、Oracle、IBM DB/2、PostgreSQLなど、さまざまなデータベースでの作業について新しい記事を書き始めています。

しかし、完成させる時間がない。

そこで、もしこのプロジェクトをサポートしたいのであれば、私のためにpaypalで数ドルを送ってもらえないだろうか: e.a.lugovoy@gmail.com

金額は問題ではありません。ただ、このような決定が本当に完成させる必要があるのかを知りたいのです。

ありがとうございました、

ユージン

 

こんにちは、EugeniyLugovoyです。


MySqlGetFieldAsDouble(Cursor, 3);'がその値を data[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 Server、MS Access、Oracle、IBM DB/2、PostgreSQLなど、さまざまなデータベースでの作業について新しい記事を書き始めています。

しかし、完成させる時間がない。

そこで、もしこのプロジェクトをサポートしたいのであれば、私のためにpaypalで数ドルを送ってもらえないだろうか: e.a.lugovoy@gmail.com

金額は問題ではありません。ただ、このような決定が本当に完成させる必要があるのかを知りたいのです。

ありがとうございました、

ユージン

配列が必要な場合があります--例えば、指定した日付(ティックの)にデータを一致させる必要があります--それはMYSQLよりも配列で作るのが便利なアルゴリズムに関連しているかもしれません。
 
illman:

こんにちは、EugeniyLugovoyです。

MySqlGetFieldAsDouble(Cursor, 3);'がその値をdata[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]);
}.

サイクル内で毎回配列を定義し、空の配列項目を表示しようとしています。

試してみてください:

// Rowsは、この回避策の前にすでに行数を取得していたと思います。
double data[];
ArrayResize(data, Rows);  

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

// ここで、"data "という配列が満たされる。
Print("data[",3,"]",data[3]);

つまり、サイクルを取得する前に一度配列を定義し、サイズを変更してから、データを取得するルーチンを書く必要があります。

ちなみに、MySqlGetFieldAsDouble(Cursor, 3); の数字の 3 は、SELECT リストの 4 番目のカラムを意味します。

お役に立てれば幸いです。

よろしく、

ユージン

 
elugovoy:

サイクル内で毎回配列を定義し、空の配列項目を表示しようとしています。

これを試してみてください:

つまり、サイクルをフェッチする前に配列を一度定義し、サイズを変更してから、データを取得するルーチンを記述する必要があります。

ちなみに、MySqlGetFieldAsDouble(Cursor, 3); の数字の 3 は、SELECT リストの 4 番目のカラムを意味します。

お役に立てれば幸いです。

よろしく、

ユージン

ありがとうございます 配列に関する私の問題を解決しました。

 
MetaTrader5 x64では、以下のライブラリを使用します(ディスカッションに添付):
 

こんにちは、エルゴヴォイ

素晴らしい記事と素晴らしいライブラリですね。

私はMT5の下であなたの例を使用しようとしていますが、私はこのエラーが出ています:

2014.12.15 15:44:16.387 MySQL-001 'C:◆Users....◆AppData ◆Roaming ◆MetaQuotes ◆Terminal ◆D0E8209F77C8CF37AD8BF550E51FF075 ◆MQL5 ◆libraries ◆MQLMySQL.dll' is not 64-bit version.

32ビット環境でMT5を実行していますか?

助けていただけますか?

ありがとうございました!

カーマイン・マローネ

 
carmine.marrone:

こんにちは、エルゴヴォイ

素晴らしい記事と素晴らしいライブラリですね。

私はMT5の下であなたの例を使用しようとしていますが、私はこのエラーが出ています:

2014.12.15 15:44:16.387 MySQL-001 'C:◆Users....◆AppData ◆Roaming ◆MetaQuotes ◆Terminal ◆D0E8209F77C8CF37AD8BF550E51FF075 ◆MQL5 ◆libraries ◆MQLMySQL.dll' is not 64-bit version.

32ビット環境でMT5を実行していますか?

助けていただけますか?

ありがとうございました!

カーマイン・マローネ

こんにちは、カーマイン

x64用のプロジェクトを 添付しました。

お役に立てれば幸いです。

ありがとう、

ユージン