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;

  }