00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef INCLUDE_SQLSTATEMENT_HH
00025 #define INCLUDE_SQLSTATEMENT_HH
00026
00027 #include <string>
00028
00029 #include "mm/gc_ptr.hh"
00030
00031 #include "Exceptions/Exception.hh"
00032
00033
00034 namespace fatalmind {
00035 namespace SQL {
00036
00037 class SQLStatementImpl;
00038
00088 class SQLStatement {
00089 public:
00092 struct Parameter {
00093
00094 static const int UNKNOWN;
00095 static const int CHAR;
00096 static const int INT;
00097 static const int FLOAT;
00098 };
00099
00103 SQLStatement();
00104
00117 SQLStatement(const std::string& sql);
00118
00129 SQLStatement(const char* sql);
00130
00131 SQLStatement(const SQLStatement&);
00132 ~SQLStatement();
00133
00144 unsigned int getParamCount() const;
00145
00158
00159 std::string getNameFor(const int pos) const;
00160
00173 int getTypeFor(const int pos) const;
00174
00180 const std::string& getSQL() const;
00181
00197 const std::string& getSQLFragment(const int pos) const;
00198
00199 bool operator==(const SQLStatement& rho);
00200
00201 bool operator!=(const SQLStatement& rho);
00202
00203 private:
00204
00205 gc_ptr<SQLStatementImpl> impl;
00206
00207 friend class SQLParser;
00208
00209 SQLStatement(SQLStatementImpl*);
00210
00211
00212
00213
00214
00215 };
00216
00217 template<class charT, class traits>
00218 std::basic_ostream<charT, traits>& operator<<(std::basic_ostream<charT, traits>& s, const SQLStatement& rho);
00219
00220 }
00221 }
00222
00223
00224 #include "SQLStatementImpl.hh"
00225
00226 #endif