MQL4, ORACL, MSSQL, MySQL'den bir veritabanına nasıl erişilir - sayfa 8

 
sergeev >> :

Ve bu konuda MS SQL çalışma süresinde tam olarak ne var?

kodu sağlayın ve sizin için nerede çalışmadığını gösterin. çözeceğiz.

//Vilkas örneği

#include <ADOLib.mqh>

int createCnn=0;
int openCnn=0;
intInsert=0;


string StringConnection="DSN=dbForex;UID=sa;PWD=;";



int init()
{



Yakın bağlantı();
DestroyConnection();

int createCnn=CreateConnection();
uyku(10);

int openCnn=OpenConnection(StringConnection,adUseClient,0);
uyku(10);


dönüş(0);
}



//Çalışma örneği:

int başlangıç()
{
//bu, bağlantının kapalı veya "bozuk" olması durumunda geçerlidir - yeterli neden var
if (createCnn<=0 || IsOpenConnection()==0)
{
createCnn=0;
openCnn=0;

Yakın bağlantı();
uyku(10);

DestroyConnection();
uyku(10);

createCnn=CreateConnection();
Uyku(30);
}

if (createCnn>0 &&(openCnn<=0 || IsOpenConnection()==0 || Insert==0))
{
openCnn=0;

Yakın bağlantı();
uyku(10);

openCnn=OpenConnection(StringConnection,adUseClient,0);
Uyku(30);
}



// ve sonra veri tabanına keneler yaz

stringCompany=HesapCompany();
string Symb=Sembol();

// Gömme kodu çalışıyor
/*
string CommandText="INSERT INTO Rates (TimeCurrent,AccountCompany,Symb,DateTimeRate,Ask,Bid)"+
"DEĞERLER("+TimeCurrent()+",'"+Şirket+"','"+Symb+"','"+DateTimeRate+"',"+Ask+","+Teklif+");
Execute(CommandText,adAsyncFetch);
uyku(15);
*/
//Veritabanından veri almak istiyorum

string CommandText="testten sor seçin burada ask='1.4560'";
string text=Execute(CommandText,adAsyncFetch);
yorum(metin);

uyku(15);

// 1 döndürür;
}



//+------------------------------------------- --------------------+
//| uzman sıfırlama işlevi |
//+------------------------------------------- --------------------+
int tanım()
{
Yakın bağlantı();
DestroyConnection();

dönüş(0);
}

 
sergeev >> :

Ve bu konuda MS SQL çalışma süresinde tam olarak ne var?

kodu verin ve sizin için nerede çalışmadığını gösterin. çözeceğiz.


//Graff örneği

//+------------------------------------------- --------------------+
//| news001.mq4 |
//| Telif hakkı © 2009, Graff |
//| |
//+------------------------------------------- --------------------+
#property telif hakkı "Telif hakkı © 2009, Graff"
#özellik bağlantısı ""

#özellik göstergesi_chart_window

#define DELİM ";"
//#include <mysql.mqh>

#import "libmysql.dll"
int mysql_init(intdb);
int mysql_errno(int TMYSQL);
int mysql_real_connect( int TMYSQL,dize ana bilgisayarı,dize kullanıcısı,dize parolası, dize DB,int bağlantı noktası,int soket,int istemci bayrağı);
int mysql_real_query(int TMSQL,dizi sorgusu,int uzunluk);
void mysql_close(int TMSQL);

int mysql_store_result(int TMSQL);
string mysql_fetch_row(int sonuç);
int mysql_num_rows(int sonuç);
void mysql_free_result(int sonuç);

//#içe aktarmak

int mysql;

int mTicket, mType;
dizi mSymbol;
çift mLot, mOpen, mClose, mStopLoss, mTakeProfit;

//+------------------------------------------- --------------------+
//| özel gösterge başlatma işlevi |
//+------------------------------------------- --------------------+
int init()
{
//---- göstergeler
dize satırı;
bağlamak();
string query="Takvimden sor seçin WHERE ask = '1.4567'";
int uzunluk=StringLen(sorgu);
mysql_real_query(mysql,sorgu,uzunluk);
int sonuç = mysql_store_result(mysql);
int numOfRows = mysql_num_rows(sonuç);
for (int i=0;i<numOfRows;i++) {
satır = mysql_fetch_row(sonuç);
yazdır(satır);

yorum(satır);

// Normal bir değer döndürür, ancak zakaruchka'nın başında

 

IMHO - kendi dll'nizi yazmanız gerekiyor. MQL4'te çok fazla dil yapısı eksik - MQL5 daha fazlasını vaat ediyor.

 

burada IMHO yardımcı olmayacak.

Peki ya belgeler? Execute ne döndürür?

Sanırım bir boole değeri döndürüyor. Metninizde 1 yazıyor yani doğru yapılmış.

kayıtlarda aranmalıdır.

 

Burada ADO üzerinden nasıl çalışılacağını gösterdi - kullanışlı olabilir - hızlı ve kolay bir şekilde ortaya çıkıyor

 
Bir grup MT4 ve MYSQL benim için iyi çalışıyor. Bu durumda libmySQL.dll dışında başka kütüphaneler kullanılmaz.
 
Söyle bana, lütfen, MetaTrader 5'in Oracle DBMS ile entegrasyonunu organize etmenin mümkün olup olmadığını kim bilebilir?
 
Twilight >> :


Veritabanından nasıl okunur?

ADOLib.mqh şöyle görünür:


// enum CursorTypeEnum için sabitler

#define adOpenBelirtilmemiş 4294967295 //$FFFFFFFF;
#define adOpenForwardOnly 0 //$00000000;
#define adOpenKeyset 1 //$00000001;
#define adOpenDynamic 2 //$00000002;
#define adOpenStatic 3 //$00000003;

// enum LockTypeEnum için sabitler

#define adLockBelirtilmemiş 4294967295 //$FFFFFFFF;
#define adLockReadOnly 1 //$00000001
#define adLockPessimistic 2 //$00000002;
#define adLockOptimistic 3 //$00000003;
#define adLockBatchOptimistic 4 //$00000004;

// enum ExecuteOptionEnum için sabitler

#define adOptionBelirtilmemiş 4294967295 //$FFFFFFFF;
#define adAsyncExecute 16 //$00000010;
#define adAsyncFetch 32 //$00000020;
#define adAsyncFetchNonBlocking 64 //$00000040;
#define adExecuteNoRecords 128 //$00000080;
#define adExecuteStream 296 //$000000400;
#define adExecuteRecord 2048 //$000000800;

// enum CursorLocationEnum için sabitler

#define adUseNone 1 //$00000001;
#define adUseServer 2 //$00000002;
#define adUseClient 3 //$00000003;
#define adUseClientBatch 3 //$00000003;

// enum CommandTypeEnum için sabitler

#define adCmdBelirtilmemiş 4294967295 //$FFFFFFFF;
#define adCmdUnknown 8 //$00000008;
#define adCmdText 1 //$00000001;
#define adCmdTable 2 //$00000002;
#define adCmdStoredProc 4 //$00000004;
#define adCmdFile 256 //$000000100;
#define adCmdTableDirect 512 //$000000200;

#import "ADOLib.dll"
int CreateConnection();
intDestroyConnection();
int OpenConnection(string ConnectionString,int CursorLocation,int CommandTimeout);
intCloseConnection();
int IsOpenConnection();
int Execute(string CommandText, int ExecuteOption);
intBeginTrans();
intCommitTrans();
int RollbackTrans();
int OpenTable(string Qry,int CursorLocation,int CursorType,int LockType,int Seçenekler);
intCloseTable();
intRequest();
int Güncelleme();
int UpdateBatch();
int İptal();
int CancelBatch();
int CancelUpdate();
int Bul(dize Kriterleri,int AramaYön,int Başlangıç);
int Filtre(dizi Kriterleri);
intBOF();
intEOF();
intMoveFirst();
intMoveLast();
intMoveNext();
string TableStatus();
intFieldsCount();
string AlanAdı(int I);
string FieldType(int Adı);
string FieldTypeByPos(int I);
string GetFieldValue(stringName);
string GetFieldValueByPos(int I);
int SetFieldValue(stringName);

int SetFieldValueByPos(int I);


ADOLib.mqh'de

yöntemler var:

GetFieldValue

GetFieldValueByPos


"Seç * Ad Tablosundan" tablosunu başarıyla açtıktan sonra

kullanarak istediğiniz kayda ayarlayın.

int is_succ=MoveFirst();

ve başarılı olursa şunları okuruz:

stringFieldVal="";

if(is_succ=1)

FieldVal=GetFieldValue("AdAlan");

veya sayısal alan işleyicisi tarafından okuyun:

int hbdFld=0;

if(is_succ=1)

FieldVal=GetFieldValueByPos(hndFld);

 

uh FIRST girişini ayarlayan MoveFirst() yöntemi,

İHTİYAÇ, ya numaralandırma-MoveNext() ile elde edilir,

ve GEREKLİ aranır ve/veya filtrelenir

SELECT'te Find(), Filter() veya WHERE'ye bakın....

 

ve daha fazla veri okuma yöntemi GetFieldValueXXXX, alan değerlerini

string yazın , böylece gerekirse yapabilirsiniz

istenilen tipte döküm