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 RESOURCEPOOL_SQL_RTSQLEXECUTE_HH
00025 #define RESOURCEPOOL_SQL_RTSQLEXECUTE_HH
00026
00027 #include "mm/gc_ptr.hh"
00028 #include "ResourcePool/SQL/RTSQLCommand.hh"
00029 #include "ResourcePool/SQL/Resource.hh"
00030 #include "ResourcePool/SQL/RTCommandParameters.hh"
00031 #include "ResourcePool/SQL/BindInterface.hh"
00032 #include "ResourcePool/SQL/SQLStatement.hh"
00033 #include "ResourcePool/ResourcePool.hh"
00034
00035 namespace fatalmind {
00036 namespace SQL {
00037
00038 template<class TM> class RTSQLExecute_Impl;
00039 template<class TM> class RTSQLBatch;
00040
00047 template<class TM>
00048 class RTSQLExecute
00049 : public RTSQLCommand<TM>
00050 , public BindInterface
00051 {
00052 public:
00057 RTSQLExecute(const ResourcePool<ResourceType<TM> >& p, const SQLStatement& sql);
00058 RTSQLExecute(const RTSQLExecute<TM>& rho);
00059 virtual ~RTSQLExecute();
00060
00061 virtual void bind(const unsigned int pos, const char& val, bool isnull = false);
00062 virtual void bind(const unsigned int pos, const signed char& val, bool isnull = false);
00063 virtual void bind(const unsigned int pos, const unsigned char& val, bool isnull = false);
00064
00065 virtual void bind(const unsigned int pos, const short int& val, bool isnull = false);
00066 virtual void bind(const unsigned int pos, const unsigned short int& val, bool isnull = false);
00067
00068 virtual void bind(const unsigned int pos, const int& val, bool isnull = false);
00069 virtual void bind(const unsigned int pos, const unsigned int& val, bool isnull = false);
00070
00071 virtual void bind(const unsigned int pos, const long int& val, bool isnull = false);
00072 virtual void bind(const unsigned int pos, const unsigned long int& val, bool isnull = false);
00073
00074 virtual void bind(const unsigned int pos, const float& val, bool isnull = false);
00075 virtual void bind(const unsigned int pos, const double& val, bool isnull = false);
00076 virtual void bind(const unsigned int pos, const long double& val, bool isnull = false);
00077
00078 virtual void bind(const unsigned int pos, const std::string& val, bool isnull = false);
00079
00080 virtual void clearParameters();
00081
00082 void execute(typename ResourceType<TM>::resource_t& hand);
00083 virtual void outputoperator(std::ostream&) const;
00084
00085 virtual const Clone* getPlainSpecializedCommand() const;
00086 protected:
00087 virtual Clone* DoClone() const;
00088
00089 private:
00090 typedef RTSQLExecute_Impl<TM> rimpl_t;
00091 gc_ptr<rimpl_t> _realSQLExecute;
00092
00093 typedef typename SQLFactory<TM>::databaseType_t databaseType_t;
00094 RTSQLExecute();
00095 };
00096
00097
00098 }
00099 }
00100 #endif