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_RTSQLSELECTROW_HH
00025 #define RESOURCEPOOL_SQL_RTSQLSELECTROW_HH
00026
00027 #include "mm/gc_ptr.hh"
00028 #include "ResourcePool/SQL/RTSQLCommand.hh"
00029 #include "ResourcePool/SQL/Resource.hh"
00030 #include "ResourcePool/SQL/BindInterface.hh"
00031 #include "ResourcePool/SQL/BindOutInterface.hh"
00032 #include "ResourcePool/SQL/RTCommandParameters.hh"
00033 #include "ResourcePool/SQL/SQLFetcher.hh"
00034 #include "ResourcePool/SQL/SQLStatement.hh"
00035
00036 namespace fatalmind {
00037 namespace SQL {
00038
00039 template<class TM> class RTSQLSelectRow_Impl;
00040
00041
00054 template<class TM>
00055 class RTSQLSelectRow
00056 : public RTSQLCommand<TM>
00057 , public BindInterface
00058 , public BindOutInterface
00059 {
00060 public:
00061 RTSQLSelectRow(const ResourcePool<ResourceType<TM> >& p, const SQLStatement& sql, SQL::SQLFetcher& fetcher = SQL::NopFetcher);
00062 RTSQLSelectRow(const RTSQLSelectRow<TM>& rho);
00063 virtual ~RTSQLSelectRow();
00064
00065 virtual void bind(const unsigned int pos, const char& val, bool isnull = false);
00066 virtual void bind(const unsigned int pos, const signed char& val, bool isnull = false);
00067 virtual void bind(const unsigned int pos, const unsigned char& val, bool isnull = false);
00068
00069 virtual void bind(const unsigned int pos, const short int& val, bool isnull = false);
00070 virtual void bind(const unsigned int pos, const unsigned short int& val, bool isnull = false);
00071
00072 virtual void bind(const unsigned int pos, const int& val, bool isnull = false);
00073 virtual void bind(const unsigned int pos, const unsigned int& val, bool isnull = false);
00074
00075 virtual void bind(const unsigned int pos, const long int& val, bool isnull = false);
00076 virtual void bind(const unsigned int pos, const unsigned long int& val, bool isnull = false);
00077
00078 virtual void bind(const unsigned int pos, const float& val, bool isnull = false);
00079 virtual void bind(const unsigned int pos, const double& val, bool isnull = false);
00080 virtual void bind(const unsigned int pos, const long double& val, bool isnull = false);
00081
00082 virtual void bind(const unsigned int pos, const std::string& val, bool isnull = false);
00083
00084 void clearParameters();
00085
00086 virtual void bindout(const unsigned int pos, char& val, bool& isnull = BindOutInterface::notnullconstant);
00087 virtual void bindout(const unsigned int pos, signed char& val, bool& isnull = BindOutInterface::notnullconstant);
00088 virtual void bindout(const unsigned int pos, unsigned char& val, bool& isnull = BindOutInterface::notnullconstant);
00089
00090 virtual void bindout(const unsigned int pos, short int& val, bool& isnull = BindOutInterface::notnullconstant);
00091 virtual void bindout(const unsigned int pos, unsigned short int& val, bool& isnull = BindOutInterface::notnullconstant);
00092
00093 virtual void bindout(const unsigned int pos, int& val, bool& isnull = BindOutInterface::notnullconstant);
00094 virtual void bindout(const unsigned int pos, unsigned int& val, bool& isnull = BindOutInterface::notnullconstant);
00095
00096 virtual void bindout(const unsigned int pos, long int& val, bool& isnull = BindOutInterface::notnullconstant);
00097 virtual void bindout(const unsigned int pos, unsigned long int& val, bool& isnull = BindOutInterface::notnullconstant);
00098
00099 virtual void bindout(const unsigned int pos, float& val, bool& isnull = BindOutInterface::notnullconstant);
00100 virtual void bindout(const unsigned int pos, double& val, bool& isnull = BindOutInterface::notnullconstant);
00101 virtual void bindout(const unsigned int pos, long double& val, bool& isnull = BindOutInterface::notnullconstant);
00102
00103 virtual void bindout(const unsigned int pos, std::string& val, bool& isnull = BindOutInterface::notnullconstant);
00104
00105 void execute(typename ResourceType<TM>::resource_t& hand);
00106
00107 virtual void outputoperator(std::ostream&) const;
00108 virtual const Clone* getPlainSpecializedCommand() const;
00109 protected:
00110 virtual Clone* DoClone() const {
00111 return new RTSQLSelectRow<TM>(*this);
00112 }
00113 private:
00114 gc_ptr<RTSQLSelectRow_Impl<TM> > _realSQLExecute;
00115
00116 typedef typename SQLFactory<TM>::databaseType_t databaseType_t;
00117 };
00118
00119
00120 }
00121 }
00122 #endif