/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/DQA/DQA_TO_DB/DQA_TO_DB-00-00-16/src/db_mysql.cpp

Go to the documentation of this file.
00001 #include "db_mysql.h"
00002 
00003 db_mysql::db_mysql()
00004         :m_Mysql(NULL)
00005         ,m_Res(NULL)
00006         ,m_bConnect(false)
00007         ,m_bSelectDB(false)
00008         ,m_bExecute(false)
00009         ,m_bGetRow(false)
00010         ,m_bInit(false)
00011 {
00012         ;       
00013 }
00014 db_mysql::db_mysql(string host,string user,string passwd,string db)
00015         :m_Mysql(NULL)
00016         ,m_Res(NULL)
00017         ,m_bConnect(false)
00018         ,m_bSelectDB(false)
00019         ,m_bExecute(false)
00020         ,m_bGetRow(false)
00021 {
00022         Init(host,user,passwd,db);
00023 }       
00024 
00025 void db_mysql::Init(string host,string user,string passwd,string db)
00026 {
00027         m_strHost = host;
00028         m_strUser = user;
00029         m_strPasswd = passwd;
00030         m_strDB = db;
00031         m_bInit = true;
00032         if(!db.empty())
00033         {
00034                 m_bSelectDB = true;
00035         }
00036 }
00037 void db_mysql::SetQuery(string query)
00038 {
00039         m_strQuery=query;
00040 }
00041 bool db_mysql::Connect(void)
00042 {
00043         if(!m_bConnect)
00044         {
00045                 my_bool b = 0;
00046                 if(!(m_Mysql=mysql_init(NULL)))
00047                 {
00048                         cout<<"Init mysql error!!"<<endl;
00049                         return false; 
00050                 }
00051 //              mysql_options(m_Mysql,MYSQL_REPORT_DATA_TRUNCATION,&b);
00052                 if(!mysql_real_connect(m_Mysql,m_strHost.c_str(),m_strUser.c_str(),m_strPasswd.c_str(),m_strDB.c_str(),0,NULL,0))
00053                 {
00054                         cout<<"Connect error!!"<<endl;
00055                         mysql_close(m_Mysql);
00056                         return false;
00057                 }
00058         }
00059         else
00060         {
00061                 cout<<"You are reconnecting!"<<endl;
00062                 return false;   
00063         }
00064         m_bConnect = true;
00065         return true;
00066 }
00067 bool db_mysql::SelectDB(string db)
00068 {
00069         if(!m_bConnect)
00070         {
00071                 cout<<"You must connect before select db!";
00072                 return false;
00073         }
00074         if(mysql_select_db(m_Mysql,db.c_str()))
00075         {
00076                 cout<<"Select database error!"<<endl;
00077                 return false;
00078         }
00079         m_strDB = db;
00080         m_bSelectDB = true;
00081         return true;
00082 }
00083         
00084 bool db_mysql::Execute(string query)
00085 {
00086         if((!m_bConnect)||(!m_bSelectDB))
00087         {
00088                 cout<<"You executing query before connection or select db!"<<endl;
00089                 return false;
00090         }
00091         if(!query.empty())
00092         {
00093                 m_strQuery=query;
00094         }
00095         if(m_strQuery.empty())
00096         {
00097                 cout<<"Your haven't set query string!"<<endl;
00098                 return false;   
00099         }
00100         else
00101         {
00102                 Free_Result();
00103                 if(mysql_real_query(m_Mysql,m_strQuery.c_str(),m_strQuery.size()))
00104                 {
00105                         cout<<"Execute query error!"<<endl;
00106                         return false;   
00107                 }       
00108         }
00109 //zhaohs
00110         Field_num=mysql_field_count(m_Mysql);
00111         if(Field_num==0){
00112         m_result=false;
00113         }
00114         else {m_result=true;}
00115 //zhaohs
00116         m_Res = mysql_store_result(m_Mysql);
00117         m_bExecute = true;
00118         return true;
00119 }
00120         
00121 bool db_mysql::GetRow(my_ulonglong row)
00122 {
00123         if(!m_bExecute)
00124         {
00125                 cout<<"You must execute query before get row!"<<endl;
00126                 return false;
00127         }
00128         if(row!=NEXT_ROW)
00129         {
00130                 if(row>=mysql_num_rows(m_Res)||row<0)
00131                 {
00132 //                      cout<<"Select row error! Row number must be set in range!"<<endl;
00133                         return false;
00134                 }
00135                 mysql_data_seek(m_Res,row);     
00136         }
00137         m_Row=mysql_fetch_row(m_Res);
00138         if(m_Row==NULL)
00139         {
00140                 cout<<"fetch_row error!"<<endl; 
00141                 return false;
00142         }
00143         
00144         m_bGetRow = true;
00145         return true;
00146 }
00147 
00148 string db_mysql::GetField(unsigned int n)
00149 {
00150         
00151         if(!m_bGetRow)
00152         {
00153                 cout<<"You must get a row before getfield value!"<<endl;
00154                 return "";
00155         }
00156         if(m_Row[n]!=NULL){ return (string)m_Row[n];}
00157         else return "";
00158 }
00160 /*string db_mysql::GetField(string name)
00161 {
00162  
00163          if(!m_bGetRow)
00164                  {cout<<"You must get a row before getfield value!"<<endl;
00165                   return "";
00166                  }
00167                 if(m_Row[name]!=NULL){ return (string)m_Row[name];}
00168                 else return "";
00169 }*/
00171 string db_mysql::GetField_name(unsigned int n)
00172 {
00173         if(!m_result)
00174                 {
00175                  cout<<"error:no select!"<<endl;
00176                 return "";
00177                 }
00178         m_field = mysql_fetch_field_direct(m_Res, n);
00179         return string(m_field->name);
00180 
00181 
00182 //      num_fields = mysql_num_fields(result);
00183 //      m_field = mysql_fetch_fields(m_Res);
00184   //      std::cout<<m_field[n].name<<std::endl;
00185 //      return m_field[n].name;
00186 
00187            
00188 }
00189 
00191 unsigned long db_mysql::Num_Rows(void)
00192 {
00193         if(!m_bExecute)
00194         {
00195                 cout<<"You are get number of rows before execute!"<<endl;
00196                 return 0;
00197         }
00198         return mysql_num_rows(m_Res);
00199 }
00200 
00201 void db_mysql::Free_Result(void)
00202 {
00203         if(m_bExecute)
00204         {
00205                 mysql_free_result(m_Res);
00206                 m_bExecute = false;
00207                 m_bGetRow = false;      
00208         }
00209 }
00210 
00211 void db_mysql::Close(void)
00212 {
00213         if(m_bConnect)
00214         {
00215                 Free_Result();
00216                 mysql_close(m_Mysql);
00217                 m_bConnect = false;
00218         }
00219 }
00220 
00221 db_mysql::~db_mysql()
00222 {
00223         Free_Result();
00224         Close();
00225 }
00226 

Generated on Tue Nov 29 22:58:05 2016 for BOSS_7.0.2 by  doxygen 1.4.7