"MQL5'ten (MQL4) MySQL Veritabanına Nasıl Erişilir" makalesi için tartışma - sayfa 2

 

Bu yeni yaklaşım için teşekkürler! Farklı çözümler denedim ancak şu ana kadar en iyisi bu gibi görünüyor. Kütüphanenize mysql_num_fields kullanarak bir SELECT sorgusu için alan sayısını döndürdüğüm küçük bir ekleme yaptım, böylece MQL tarafında kaç alanı işlemem ve döndürmem gerektiğini biliyorum. Bunu bir araya getirdiğiniz için tekrar çok teşekkürler, gerçekten yardımcı oldu!!!

MQL Kodu:

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

Bu yeni yaklaşım için teşekkürler! Farklı çözümler denedim ancak şu ana kadar en iyisi bu gibi görünüyor. Kütüphanenize mysql_num_fields kullanarak bir SELECT sorgusu için alan sayısını döndürdüğüm küçük bir ekleme yaptım, böylece MQL tarafında kaç alanı işlemem ve döndürmem gerektiğini biliyorum. Bunu bir araya getirdiğiniz için tekrar çok teşekkürler, gerçekten yardımcı oldu!!!

Nazik sözleriniz için teşekkürler. Bu temel bir çözüm ve gerçekte kullandığım genel işlevselliği koruyor.

Bu çözümü geliştirirken sonraki kuralları kullandım: sağlamlık, çalışması kolay, kullanımı basit ve minimum destek.

Elbette, bu projeyi değiştirebilir ve proje ihtiyaçlarınızla ilgili herhangi bir ek fonksiyon ekleyebilirsiniz.

İyi şanslar,

Eugene

 

Merhaba arkadaşlar,

Bu çözümü beğendiyseniz ve gerçek projeler için deniyorsanız (sadece eğlence için değil) bir güncellemem var.

MS SQL Server, MS Access, Oracle, IBM DB/2, PostgreSQL gibi farklı veritabanları ile çalışma hakkında yeni bir makale yazmaya başlıyorum.

Karar bunun gibi sağlam ve kullanımı kolay olacaktı, ancak bunu tamamlamak için zamanım yok.

Eğer bu projeyi desteklemek istiyorsanız paypal üzerinden bana birkaç dolar gönderebilir misiniz: e.a.lugovoy@gmail.com

Meblağın miktarı önemli değil, sadece böyle bir kararın gerçekten tamamlanması gerekip gerekmediğini bilmek istiyorum.

Hepinize teşekkür ederim,

Eugene

 

merhaba,EugeniyLugovoy~


Neden ' MySqlGetFieldAsDouble(Cursor, 3);' değerini veri[i]yeyazamadığını bilmekistiyorum?


Print("veri[i]",veri[3]);--her zaman 0.0 displa. sorun nedir? teşekkür ederim efendim!



for (i=0; i<Satırlar; i++)
if (MySqlCursorFetchRow(Cursor))

{

double veri[] ;

ArrayResize(data,Rows);

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

Print("veri[i]",veri[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:

Merhaba arkadaşlar,

Bu çözümü beğendiyseniz ve gerçek projeler için deniyorsanız (sadece eğlence için değil) bir güncellemem var.

MS SQL Server, MS Access, Oracle, IBM DB/2, PostgreSQL gibi farklı veritabanları ile çalışma hakkında yeni bir makale yazmaya başlıyorum.

Karar bunun gibi sağlam ve kullanımı kolay olacaktı, ancak bunu tamamlamak için zamanım yok.

Eğer bu projeyi desteklemek istiyorsanız paypal üzerinden bana birkaç dolar gönderebilir misiniz: e.a.lugovoy@gmail.com

Meblağın miktarı önemli değil, sadece böyle bir kararın gerçekten tamamlanması gerekip gerekmediğini bilmek istiyorum.

Hepinize teşekkür ederim,

Eugene

bazen, dizi gereklidir - örneğin , verileri belirli bir tarihle eşleştirmemiz gerekir (kene) - bunu MYSQL'den ziyade dizide yapmak için uygun olan algoritma ile ilgili olabilir。 bana yardım edebilir misiniz efendim? çok teşekkürler ~!
 
illman:

merhaba,EugeniyLugovoy~

Neden 'MySqlGetFieldAsDouble(Cursor, 3);' değerini veri[i]ye yazamadığını bilmek istiyorum?

Print("veri[i]",veri[3]);--her zaman 0.0 displa. sorun nedir? teşekkür ederim efendim!

for (i=0; i<Satırlar; i++)

if (MySqlCursorFetchRow(Cursor))

{

double veri[] ;

ArrayResize(data,Rows);

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

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

Döngüde her seferinde dizi tanımlamaya ve boş dizi öğesi yazdırmaya çalışıyorsunuz.

Bunu deneyin:

// Sanırım Rows bu geçici çözümden önce zaten satır sayısını alıyor.
double data[];
ArrayResize(data, Rows);  

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

// burada "data" dizisini dolduracaksınız
Print("data[",3,"]",data[3]);

Bu nedenle, döngüyü getirmeden önce diziyi bir kez tanımlamanız, ardından yeniden boyutlandırmanız ve ardından verileri almak için rutin yazmanız gerekir.

Bu arada, MySqlGetFieldAsDouble(Cursor ,3); içindeki 3 sayısı SELECT listesindeki 4. sütun anlamına gelir, çünkü numaralandırma 0 ile başlar, yani SELECT Open, High, Low, Close FROM ... 0 - Open, 1 - High, 2 - Low ve 3 - Close anlamına gelir.

Umarım bu yardımcı olur.

Saygılar,

Eugene

 
elugovoy:

Döngüde her seferinde dizi tanımlamaya ve boş dizi öğesi yazdırmaya çalışıyorsunuz.

Bunu deneyin:

Bu nedenle, döngüyü getirmeden önce diziyi bir kez tanımlamanız, ardından yeniden boyutlandırmanız ve ardından verileri almak için rutin yazmanız gerekir.

Bu arada, MySqlGetFieldAsDouble(Cursor ,3); içindeki 3 sayısı SELECT listesindeki 4. sütun anlamına gelir, çünkü numaralandırma 0 ile başlar, yani SELECT Open, High, Low, Close FROM ... 0 - Open, 1 - High, 2 - Low ve 3 - Close anlamına gelir.

Umarım bu yardımcı olur.

Saygılar,

Eugene

yardımınız için teşekkürler efendim,Dizi ile ilgili sorunlarımı çözdüm。Mysql-mql konusunda gerçekten iyi bir iş çıkardınız~!

 
MetaTrader5 x64 için aşağıdaki kütüphaneyi kullanın (tartışmaya eklenmiştir):
[Silindi]  

Merhaba elugovoy

Harika makale ve harika kütüphaneler.

Örneklerinizi MT5 altında kullanmaya çalışıyorum ancak bu hatayı alıyorum:

2014.12.15 15:44:16.387 MySQL-001 'C:\Users\....\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\libraries\MQLMySQL.dll' 64 bit sürüm değil

MT5'i 32 bit env altında mı çalıştırıyorsunuz?

Lütfen bana bu konuda yardımcı olur musunuz?

Çok teşekkür ederim!

Carmine Marrone

 
carmine.marrone:

Merhaba elugovoy

Harika makale ve harika kütüphaneler.

Örneklerinizi MT5 altında kullanmaya çalışıyorum ancak bu hatayı alıyorum:

2014.12.15 15:44:16.387 MySQL-001 'C:\Users\....\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\libraries\MQLMySQL.dll' 64 bit sürüm değil

MT5'i 32-bit env altında mı çalıştırıyorsunuz?

Lütfen bana bu konuda yardımcı olur musunuz?

Çok teşekkür ederim!

Carmine Marrone.

Merhaba Carmine

Yukarıdaki tartışmada x64 için proje ekledim, bu yazıdan bir göz atın ve / veya indirin.

Umarım bu yardımcı olur.

Saygılar,

Eugene