00001 #ifdef _WIN32
00002 #ifndef __MINGW32__
00003 #pragma warning(disable:4786)
00004 #endif
00005 #endif
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef _QUERY_H_SQLITE
00031 #define _QUERY_H_SQLITE
00032
00040 #include <string>
00041 #include <map>
00042 #ifdef WIN32
00043 typedef unsigned __int64 uint64_t;
00044 typedef __int64 int64_t;
00045 #else
00046 #include <stdint.h>
00047 #endif
00048
00049
00050 #ifdef SQLITEW_NAMESPACE
00051 namespace SQLITEW_NAMESPACE {
00052 #endif
00053
00054
00056 class Query
00057 {
00058 public:
00060 Query(Database& dbin);
00063 Query(Database& dbin,const std::string& sql);
00065 ~Query();
00066
00068 bool Connected();
00070 Database& GetDatabase() const;
00072 const std::string& GetLastQuery();
00073
00076 bool execute(const std::string& sql);
00078 sqlite3_stmt *get_result(const std::string& sql);
00081 void free_result();
00084 bool fetch_row();
00086 sqlite_int64 insert_id();
00088 long num_rows();
00090 std::string GetError();
00092 int GetErrno();
00093
00095 const char *get_string(const std::string& sql);
00097 long get_count(const std::string& sql);
00099 double get_num(const std::string& sql);
00100
00102 bool is_null(int x);
00103
00105 const char *getstr(const std::string& x);
00107 const char *getstr(int x);
00109 const char *getstr();
00110
00112 long getval(const std::string& x);
00114 long getval(int x);
00116 long getval();
00117
00119 unsigned long getuval(const std::string& x);
00121 unsigned long getuval(int x);
00123 unsigned long getuval();
00124
00126 int64_t getbigint(const std::string& x);
00128 int64_t getbigint(int x);
00130 int64_t getbigint();
00131
00133 uint64_t getubigint(const std::string& x);
00135 uint64_t getubigint(int x);
00137 uint64_t getubigint();
00138
00140 double getnum(const std::string& x);
00142 double getnum(int x);
00144 double getnum();
00145
00146 private:
00148 Query(const Query& q) : m_db(q.GetDatabase()) {}
00150 Query& operator=(const Query& ) { return *this; }
00152 void ViewRes();
00154 void error(const std::string& );
00155 Database& m_db;
00156 Database::OPENDB *odb;
00157 sqlite3_stmt *res;
00158 bool row;
00159 short rowcount;
00160 std::string m_tmpstr;
00161 std::string m_last_query;
00162 int cache_rc;
00163 bool cache_rc_valid;
00164 int m_row_count;
00165
00166 std::map<std::string,int> m_nmap;
00167 int m_num_cols;
00168 };
00169
00170
00171 #ifdef SQLITEW_NAMESPACE
00172 }
00173 #endif
00174
00175 #endif // _QUERY_H