#ifndef _MYSQL_ #define _MYSQL_ #include #include #include #include #include #include #include #include #include #include #include #include #include #define CONNECT_TRY_LIMIT 3 using namespace std; using namespace sql; using namespace mysql; class sqlQA { public: // query string cmd; string table; vector columns; bool isUpdate = false; bool isSelect = false; // answer uint updateCatch = 0; bool executed = false; map> result; uint num_rows = 0; uint num_columns = 0; // query methods sqlQA& select(const string _select = "*"); sqlQA& from(const string _tablename); sqlQA& where(const string _condition); sqlQA& limit(const uint _limit); sqlQA& insertInTo(const string _tablename, const string _columns = ""); sqlQA& values(const string _values); sqlQA& update(const string _tablename); sqlQA& set(const string _column_value_pairs); sqlQA& deleteFrom(const string _table); // answer methods private: void parse_columns(const string _cloumns); }; class mySQL { public: mutex io; MySQL_Driver *drv; Connection *con; string path, username, password, db; bool isPersistent; mySQL(const string _path, const string _username, const string _password, const string _db, bool _isPersistent = false); bool open(const string _db = ""); bool connect(); bool disconnect(); void exec(sqlQA &sql_qa); void getColumns(const string _table, vector &_columns); ~mySQL(); }; #endif