Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
А что вы конкретно имеете в наработке по данному вопросу MS SQL?
приведите код и покажите где у вас не работает. будем разбираться.
//DasVilkas-Beispiel
#include <ADOLib.mqh>
int createCnn=0;
int openCnn=0;
int Insert=0;
string StringConnection="DSN=dbForex;UID=sa;PWD=;";
int init()
{
CloseConnection();
DestroyConnection();
int createCnn=CreateConnection();
Schlafen(10);
int openCnn=OpenConnection(StringConnection,adUseClient,0);
Schlafen(10);
zurück(0);
}
//Arbeitsbeispiel:
int start()
{
//das ist nur für den Fall, dass eine Verbindung geschlossen oder "schlecht" wird - es gibt genug Gründe
if (createCnn<=0 || IsOpenConnection()==0)
{
createCnn=0;
openCnn=0;
CloseConnection();
Schlafen(10);
DestroyConnection();
Schlafen(10);
createCnn=CreateConnection();
Schlaf(30);
}
if (createCnn>0 &&(openCnn<=0 || IsOpenConnection()==0 || Insert==0))
{
openCnn=0;
CloseConnection();
Schlafen(10);
openCnn=OpenConnection(StringConnection,adUseClient,0);
Schlaf(30);
}
//und dann Ticks in die Datenbank schreiben
string Company=AccountCompany();
string Symb=Symbol();
//Einfügungscode funktioniert
/*
string CommandText="INSERT INTO Rates (TimeCurrent,AccountCompany,Symb,DateTimeRate,Ask,Bid) "+
"VALUES("+TimeCurrent()+",'"+Company+"','"+Symb+"','"+DateTimeRate+"',"+Ask+","+Bid+")";
Execute(CommandText,adAsyncFetch);
Schlaf(15);
*/
//Ich möchte Daten aus der Datenbank empfangen
string CommandText="select ask from test where ask='1.4560'";
string text=Execute(CommandText,adAsyncFetch);
Kommentar (Text);
Schlaf(15);
//gibt 1 zurück;
}
//+------------------------------------------------------------------+
//| Experten-Deinitialisierungsfunktion |
//+------------------------------------------------------------------+
int deinit()
{
CloseConnection();
DestroyConnection();
zurück(0);
}
А что вы конкретно имеете в наработке по данному вопросу MS SQL?
приведите код и покажите где у вас не работает. будем разбираться.
//Muster Graff.
//+------------------------------------------------------------------+
//| news001.mq4 |
//| Copyright © 2009, Graff |
//| |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, Graff"
#property link ""
#property indicator_chart_window
#define DELIM ";"
//#include <mysql.mqh>
#import "libmysql.dll"
int mysql_init(int db);
int mysql_errno(int TMYSQL);
int mysql_real_connect( int TMYSQL,string host,string user,string password, string DB,int port,int socket,int clientflag);
int mysql_real_query(int TMSQL,string query,int length);
void mysql_close(int TMSQL);
int mysql_store_result(int TMSQL);
string mysql_fetch_row(int result);
int mysql_num_rows(int result);
void mysql_free_result(int result);
//#import
int mysql;
int mTicket, mType;
string mSymbol;
double mLots, mOpen, mClose, mStopLoss, mTakeProfit;
//+------------------------------------------------------------------+
//| Benutzerdefinierte Initialisierungsfunktion für Indikatoren |
//+------------------------------------------------------------------+
int init()
{
//---- Indikatoren
Zeichenfolge Zeile;
connect();
string query="Select ask from calendar WHERE ask = '1.4567'";
int length=StringLen(Abfrage);
mysql_real_query(mysql,abfrage,länge);
int result = mysql_store_result(mysql);
int numOfRows = mysql_num_rows(result);
for (int i=0;i<numOfRows;i++) {
row = mysql_fetch_row(result);
Print(row);
Kommentar(reihe);
//gibt einen normalen Wert zurück, jedoch zu Beginn des Ladevorgangs
IMHO - müssen Sie Ihre eigene DLL schreiben. In MQL4 fehlen zu viele Sprachkonstrukte - MQL5 verspricht mehr.
IMHO ist dies nicht hilfreich.
Was ist mit der Dokumentation? Was gibt Execute zurück?
Ich glaube, es gibt einen booleschen Wert zurück, in Ihrem Text steht 1. Es bedeutet, dass sie korrekt ausgeführt wurde.
Sie müssen die Aufzeichnungen durchsuchen.
Hier ist eine Demonstration, wie man über ADO arbeitet - könnte sich als nützlich erweisen - schnell und einfach zu erledigen
А как осуществить чтение из БД?ADOLib.mqh sieht folgendermaßen aus:
// Konstanten für enum CursorTypeEnum#define adOpenUnspecified 4294967295 //$FFFFFFFFFF;
#define adOpenForwardOnly 0 //$000000000000;
#define adOpenKeyset 1 //$00000001;
#define adOpenDynamic 2 //$00000002;
#define adOpenStatic 3 //$00000003;
// Konstanten für enum LockTypeEnum
#define adLockUnspecified 4294967295 //$FFFFFFFFFF;
#define adLockReadOnly 1 //$00000001
#define adLockPessimistic 2 //$00000002;
#define adLockOptimistic 3 //$$00000003;
#define adLockBatchOptimistic 4 //$00000004;
// Konstanten für enum ExecuteOptionEnum
#define adOptionUnspecified 4294967295 //$FFFFFFFFFF;
#define adAsyncExecute 16 //$00000010;
#define adAsyncFetch 32 //$00000020;
#define adAsyncFetchNonBlocking 64 //$00000040;
#define adExecuteNoRecords 128 //$00000080;
#define adExecuteStream 296 //$00000400;
#define adExecuteRecord 2048 //$00000800;
// Konstanten für enum CursorLocationEnum
#define adUseNone 1 //$00000001;
#define adUseServer 2 //$00000002;
#define adUseClient 3 //$00000003;
#define adUseClientBatch 3 //$00000003;
// Konstanten für enum CommandTypeEnum
#define adCmdUnspecified 4294967295 //$FFFFFFFFFF;
#define adCmdUnknown 8 //$00000008;
#define adCmdText 1 //$00000001;
#define adCmdTable 2 //$00000002;
#define adCmdStoredProc 4 //$00000004;
#define adCmdFile 256 //$00000100;
#define adCmdTableDirect 512 //$00000200;
#Importieren Sie "ADOLib.dll".
int CreateConnection();
int DestroyConnection();
int OpenConnection(string ConnectionString,int CursorLocation,int CommandTimeout);
int CloseConnection();
int IsOpenConnection();
int Execute(string CommandText,int ExecuteOption);
int BeginTrans();
int CommitTrans();
int RollbackTrans();
int OpenTable(string Qry,int CursorLocation,int CursorType,int LockType,int Options);
int CloseTable();
int Requery();
int Update();
int UpdateBatch();
int Abbrechen();
int CancelBatch();
int CancelUpdate();
int Find(string Criteria,int SearchDirection,int Start);
int Filter(string Criteria);
int BOF();
int EOF();
int MoveFirst();
int MoveLast();
int MoveNext();
string TableStatus();
int FieldsCount();
string Feldname(int I);
string FieldType(int Name);
string FieldTypeByPos(int I);
string GetFieldValue(string Name);
string GetFieldValueByPos(int I);
int SetFieldValue(string Name);
intFieldValueByPos(int I);
in ADOLib.mqh
es gibt Methoden:
GetFieldValue
GetFieldValueByPos
nach erfolgreichem Öffnen der Tabelle "SELECT * FROM NameTable"
auf den richtigen Datensatz gesetzt mit
int is_succ=MoveFirst();
und bei Erfolg, lesen:
string FieldVal=";
if(is_succ=1)
FieldVal=GetFieldValue("NameField");
oder durch den Numeric Handler des Feldes gelesen:
int hbdFld=0;
if(is_succ=1)
FieldVal=GetFieldValueByPos(hndFld);
die Methode MoveFirst(), die auf den ERSTEN Eintrag setzt,
die, die Sie wollen, werden entweder von MoveNext() außer Kraft gesetzt,
und die, die Sie nicht wollen, werden entweder durchsucht und/oder gefiltert.
siehe. Find(),Filter() oder WHERE in SELECT....
und auch die GetFieldValueXXXX-Datenlesemethoden konvertieren Feldwerte in
String-Typ, so dass bei Bedarf die
auf den gewünschten Typ