query1.hh
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:3k
源码类别:

模拟服务器

开发平台:

C/C++

  1. #ifndef __query1_hh__
  2. #define __query1_hh__
  3. #include <mysql.h>
  4. #include "define_short.h"
  5. #include "sql_query1.hh"
  6. #include "result1.hh"
  7. #include "connection1.hh"
  8. //: A Query class suitable for executing queries.
  9. // This is the class is subclassed from SQLQuery. This class unlike
  10. // SQLQuery is loosely attached to a Mysql object so that it can
  11. // execute queries.
  12. class Query : public SQLQuery
  13. {
  14. private:
  15.   Connection   *mysql;
  16.   bool         throw_exceptions;
  17.   int     affected_rows() const;
  18.   int     insert_id ();
  19.   string  info ();
  20.   bool    lock();
  21.   void    unlock();
  22. public:
  23.   Query(Connection *m, bool te = false)
  24.     {mysql = m;errmsg=NULL;Success = true;throw_exceptions=te;}
  25.   //: Create a new query object attached to a connection.
  26.   Query(const Query &q); //:
  27.   Query& operator = (const Query &q); //:
  28.   string   error ();  //: The error message if the query was not successful.
  29.   bool     success(); //: Displays the string currently in the buffer.
  30.   // Same thing as string().
  31.   string   preview () {return str(def);}       //:
  32.   string   preview (parms &p) {return str(p);} //:
  33. bool     exec (const string &str);
  34.   //!dummy: MysqlResNSel execute (...);
  35.   //: Executes the query in the string buffer.
  36.   // Executes the query in the string buffer and returns a structure
  37.   // that contains the information of the success of the query. Use
  38.   // this for queries that don't return a result set such as INSERT,
  39.   // UPDATE, etc.
  40.   //
  41.   // The parameters can be anything in a valid SQLQuery::str.
  42.   //!dummy: MysqlRes store (...);
  43.   //: Executes the query in the string buffer.
  44.   // Executes a query in the string buffer and returns the result.
  45.   //
  46.   // The parameters can be anything in a valid SQLQuery::str.
  47.   //!dummy: MysqlResUse use (...);
  48.   //: Executes the query in the string buffer.
  49.   // Executes the query in the string buffer and returns the
  50.   // results. This method used the mysql_use_result(MYSQL_RES)
  51.   // function and thus should be used sparingly. Also the Result set is
  52.   // a lot more limited and DOES NOT have an iterator.
  53.   //
  54.   // The parameters can be anything in a valid SQLQuery::str.
  55.   mysql_query_define0(string,preview)
  56.   mysql_query_define1(ResNSel, execute)
  57.   mysql_query_define1(ResUse, use)
  58.   mysql_query_define1(Result, store)
  59.   mysql_query_define2(storein_sequence)
  60.   mysql_query_define2(storein_set)
  61.   mysql_query_define2(storein)
  62.   template <class T> Query& update(const T &o, const T &n)
  63.   {
  64.     SQLQuery::update(o,n);
  65.     return *this;
  66.   }
  67.   template <class T> Query& insert(const T &v)
  68.   {
  69.     SQLQuery::insert(v);
  70.     return *this;
  71.   }
  72.   template <class T> Query& replace(const T &v)
  73.   {
  74.     SQLQuery::replace(v);
  75.     return *this;
  76.   }
  77. };
  78. #endif