MYSqlEA
//+------------------------------------------------------------------+
//| Mysql-Sample.mq5 |
//| Copyright Bogdan Baltatu|
//| http://mqlmagazine.com |
//+------------------------------------------------------------------+
#property copyright "Bogdan Baltatu"
#property link "http://mqlmagazine.com"
#property version "1.00"
#include <stringlib.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 TMYSQL,string& query,int lenght);
void mysql_close(int TMSQL);
string mysql_error(int TMYSQL); //string is ansi
#import
string MySqlHost ="172.16.0.236"; //MySql Host on Winxp
//string MySqlHost ="172.16.0.1"; //MySql Host on Linux
string MySqlUser ="root"; //MySQL User:
string MySqlPass ="botvos"; //MySQL Password:
string MySqlDB ="forex"; //MySQL Table:
int MySqlPort =3306; //MySQL Port:
string MySqlSocket =""; //MySQL Socket:
input int MySqlFlag =0; //MySQL Flag:
int mysql =0;
string query="";
MqlTick tick;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
string host,user,pass,DB;
if(MQL5InfoInteger(MQL5_DLLS_ALLOWED)==0)
{
Alert("DLL calling not allowed. Allow and try again!");
}
mysql=mysql_init(0);
Print("obiectul mysql=",mysql);
host=UNICODE2ANSI(MySqlHost);
user=UNICODE2ANSI(MySqlUser);
pass=UNICODE2ANSI(MySqlPass);
DB=UNICODE2ANSI(MySqlDB);
int res=mysql_real_connect(mysql,host,user,pass,DB,MySqlPort,MySqlSocket,MySqlFlag);
Print("connection result=",res);
if (res==mysql)
Print("Successfully connected to the MySQL server!");
else
{
string s;
s=mysql_error(mysql);
Print("Eroare de conectare = ",ANSI2UNICODE(s));
return(0);
}
//Create table
StringConcatenate(query,"CREATE TABLE IF NOT EXISTS ",_Symbol," (time VARCHAR(30) ,BID double,ASK double)");
sql_query(query);
return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
mysql_close(mysql); //Close connection
return;
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
SymbolInfoTick(_Symbol,tick);
StringConcatenate(query,"INSERT INTO ",Symbol()," (time,ask,bid) VALUES ('",tick.time,"',",tick.ask,",",tick.bid,")");
sql_query(query);
return;
}
//+------------------------------------------------------------------+
void sql_query(string _query)
{
string ansiquery;
int length=StringLen(_query);
ansiquery=UNICODE2ANSI(_query);
mysql_real_query(mysql,ansiquery,length);
int mysqlerr=mysql_errno(mysql);
if (mysqlerr>0)
{
Print("Query: ",_query);
Print("Returned error: ",ANSI2UNICODE(mysql_error(mysql)) );
}
return;
}