//+------------------------------------------------------------------+ //| カスタムインジケータ初期化関数 //+------------------------------------------------------------------+ int init() { //---- インジケータ の文字列を表示します。 connect()を使用します。 string query="Select ask from calendar WHERE ask = '1.4567'"; int length=StringLen(query)。 mysql_real_query(mysql,query,length); 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)です。
#import "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).OpenTable(string Qry,int CursorLocation,int CursorType,int LockType,int Options); int CloseTable()。 int Requery()。 int Update(); int UpdateBatch()。 int Cancel()。 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()。 文字列 TableStatus()。 int FieldsCount()。 文字列 FieldName(int I); string FieldType(int Name)。 文字列 FieldTypeByPos(int I)。 string GetFieldValue(string Name)。 文字列 GetFieldValueByPos(int I)。 int SetFieldValue(string Name)。
А что вы конкретно имеете в наработке по данному вопросу MS SQL?
приведите код и покажите где у вас не работает. будем разбираться.
//TheVilkasの例
#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();
スリープ(10)。
int openCnn=OpenConnection(StringConnection,adUseClient,0)とする。
スリープ(10)。
return(0)です。
}
//ジョブ例
int start()
{
//これは、接続が閉じられたり、「悪くなった」場合に備えてのことです。
if (createCnn<=0 || IsOpenConnection()==0)
{
createCnn=0とする。
openCnn=0です。
CloseConnection()。
スリープ(10)。
DestroyConnection()。
スリープ(10)。
createCnn=CreateConnection()。
スリープ(30)。
}
if (createCnn>0 &&(openCnn<=0 || IsOpenConnection()==0 || Insert==0))
{
openCnn=0です。
CloseConnection()。
スリープ(10)。
openCnn=OpenConnection(StringConnection,adUseClient,0)とする。
スリープ(30)。
}
//そして、データベースに刻みを書き込む
string Company=AccountCompany()。
文字列 Symb=Symbol()。
//挿入コードが動作する
/*
string Command Text="INSERT INTO Rates (TimeCurrent,AccountCompany,Symb,DateTimeRate,Ask,Bid) "+".
"VALUES("+TimeCurrent()+",'"+Company+"','"+Symb+"','"+DateTimeRate+"',"+Ask+","+Bid+")";
Execute(CommandText,adAsyncFetch)を実行します。
スリープ(15)です。
*/
//データベースからデータを受け取りたい
string CommandText="select ask from test where ask='1.4560'";
string text=Execute(CommandText,adAsyncFetch);
コメント(本文)
スリープ(15)です。
//1を返します。
}
//+------------------------------------------------------------------+
//| 専門家による初期化関数
//+------------------------------------------------------------------+
int deinit()
{
CloseConnection()。
DestroyConnection()。
return(0)です。
}
А что вы конкретно имеете в наработке по данному вопросу MS SQL?
приведите код и покажите где у вас не работает. будем разбираться.
//Sample Graff.
//+------------------------------------------------------------------+
//| news001.mq4
//| 著作権 © 2009, グラフ
//| |
//+------------------------------------------------------------------+
#property copyright "著作権 © 2009, グラフ"
#プロパティリンク ""
#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);
文字列 mysql_fetch_row(int result);
int mysql_num_rows(int result);
void mysql_free_result(int result);
//#import
int mysql;
int mTicket, mType;
文字列 mSymbol;
double mLots, mOpen, mClose, mStopLoss, mTakeProfit;
//+------------------------------------------------------------------+
//| カスタムインジケータ初期化関数
//+------------------------------------------------------------------+
int init()
{
//---- インジケータ
の文字列を表示します。
connect()を使用します。
string query="Select ask from calendar WHERE ask = '1.4567'";
int length=StringLen(query)。
mysql_real_query(mysql,query,length);
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)です。
コメント(列)
//正常な値を返すが、ロードの先頭に位置する
IMHO - あなた自身のDLLを書く必要があります。MQL4では、あまりにも多くの言語コンストラクトが欠落しており、MQL5ではさらに多くの言語コンストラクトを約束します。
IMHOはここでは参考にならない。
ドキュメントについてはどうでしょう。Executeは何を返すのですか?
ブール値を返すのだと思います。 テキストには1と書かれていますね。正しく実行されたことを意味します。
録音の中から探さなければならない。
ADOを使用する方法についてのデモです 。
А как осуществить чтение из БД?ADOLib.mqhはこのようになります。
// enum CursorTypeEnum の定数#define adOpenUnspecified 4294967295 //$FFFFFFFF;
#define adOpenForwardOnly 0 //$0000000000;
#define adOpenKeyset 1 //$00000001;
#define adOpenDynamic 2 //$00000002;
#define adOpenStatic 3 //$00000003;
// enum LockTypeEnum の定数
#define adLockUnspecified 4294967295 //$FFFFFFFF;
#define adLockReadOnly 1 //$00000001
#define adLockPessimistic 2 //$00000002;
#define adLockOptimistic 3 //$$00000003;
#define adLockBatchOptimistic 4 //$00000004;
// enum ExecuteOptionEnum の定数
#define adOptionUnspecified 4294967295 //$FFFFFFFF;
#define adAsyncExecute 16 //$00000010;
#define adAsyncFetch 32 //$00000020;
#define adAsyncFetchNonBlocking 64 //$00000040;
#define adExecuteNoRecords 128 //$00000080;
#define adExecuteStream 296 //$00000400;
#define adExecuteRecord 2048 //$00000800;
// enum CursorLocationEnum の定数
#define adUseNone 1 //$00000001;
#define adUseServer 2 //$00000002;
#define adUseClient 3 //$00000003;
#define adUseClientBatch 3 //$00000003;
// enum CommandTypeEnum の定数
#define adCmdUnspecified 4294967295 //$FFFFFFFF;
#define adCmdUnknown 8 //$00000008;
#define adCmdText 1 //$00000001;
#define adCmdTable 2 //$00000002;
#define adCmdStoredProc 4 //$00000004;
#define adCmdFile 256 //$00000100;
#define adCmdTableDirect 512 //$00000200;
#import "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).OpenTable(string Qry,int CursorLocation,int CursorType,int LockType,int Options);
int CloseTable()。
int Requery()。
int Update();
int UpdateBatch()。
int Cancel()。
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()。
文字列 TableStatus()。
int FieldsCount()。
文字列 FieldName(int I);
string FieldType(int Name)。
文字列 FieldTypeByPos(int I)。
string GetFieldValue(string Name)。
文字列 GetFieldValueByPos(int I)。
int SetFieldValue(string Name)。
intFieldValueByPos(int I)。
ADOLib.mqhの中で
方法があります。
GetFieldValue
GetFieldValueByPos
テーブル "SELECT * FROM NameTable "のオープンに成功した後
をセットして、正しいレコードにする。
int is_succ=MoveFirst()。
を読み、成功したら読みます。
string FieldVal=";
if(is_succ=1)
FieldVal=GetFieldValue("NameField")。
またはそのフィールドの数値ハンドラによって読み取られる。
int hbdFld=0;
if(is_succ=1)
FieldVal=GetFieldValueByPos(hndFld)。
最初のエントリに設定する MoveFirst() メソッド。
は、MoveNext()によって上書きされます。
で、不要なものは検索やフィルタリングされます。
をご覧ください。SELECTのFind()、Filter()、WHERE...。
また、GetFieldValueXXXX データ読み込みメソッドは、フィールド値を
文字列型 なので、必要であれば
を必要な型に変換する