TDbiResultSetHandle.hxx
Go to the documentation of this file.00001 #ifndef DBIRESULTSETHANDLE_H
00002
00003 #define USE_NEW_DBI_API
00004 #define DBIRESULTSETHANDLE_H
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #include <map>
00030 #include <string>
00031 using std::string;
00032
00033 #include "TDbi.hxx"
00034 #include "TDbiResultSet.hxx"
00035 #include "TDbiDatabaseManager.hxx"
00036 #include "TDbiValidityRec.hxx"
00037 #include "TVldContext.hxx"
00038
00039 class TDbiResultSet;
00040 class TDbiResultKey;
00041 class TDbiSqlContext;
00042 class TDbiTableProxy;
00043
00044 template <class T> class TDbiResultSetHandle
00045 {
00046
00047 public:
00048
00049
00050 TDbiResultSetHandle();
00051 TDbiResultSetHandle(const TDbiResultSetHandle& that);
00052 TDbiResultSetHandle(const TVldContext& vc,
00053 TDbi::Task task = TDbi::kDefaultTask,
00054 TDbi::AbortTest abortTest = TDbi::kTableMissing,
00055 Bool_t findFullTimeWindow = true);
00056 TDbiResultSetHandle(const string& tableName,
00057 const TVldContext& vc,
00058 TDbi::Task task = TDbi::kDefaultTask,
00059 TDbi::AbortTest abortTest = TDbi::kTableMissing,
00060 Bool_t findFullTimeWindow = true);
00061 TDbiResultSetHandle(const string& tableName,
00062 const TDbiSqlContext& context,
00063 const TDbi::Task& task = TDbi::kAnyTask,
00064 const string& data = "",
00065 const string& fillOpts = "",
00066 TDbi::AbortTest abortTest = TDbi::kTableMissing);
00067 TDbiResultSetHandle(const string& tableName,
00068 const TDbiValidityRec& vrec,
00069 TDbi::AbortTest abortTest = TDbi::kTableMissing);
00070 TDbiResultSetHandle(const string& tableName,
00071 UInt_t seqNo,
00072 UInt_t dbNo,
00073 TDbi::AbortTest abortTest = TDbi::kTableMissing);
00074 virtual ~TDbiResultSetHandle();
00075
00076
00077
00078 const TDbiResultKey* GetKey() const;
00079 UInt_t GetNumRows() const;
00080 const TDbiResultSet* GetResult() const { return fResult; }
00081 Int_t GetResultID() const;
00082 const T* GetRow(UInt_t rowNum) const;
00083 const T* GetRowByIndex(UInt_t index) const;
00084 const TDbiValidityRec* GetValidityRec(const TDbiTableRow* row=0) const;
00085 TDbiTableProxy& TableProxy() const;
00086 Bool_t ResultsFromDb() const;
00087
00088 static TDbiTableProxy& GetTableProxy();
00089 static TDbiTableProxy& GetTableProxy(const string& tableName);
00090
00091
00092 UInt_t NextQuery(Bool_t forwards = kTRUE);
00093 UInt_t NewQuery(TVldContext vc,
00094 TDbi::Task task=0,
00095 Bool_t findFullTimeWindow = true);
00096 UInt_t NewQuery(const TDbiSqlContext& context,
00097 const TDbi::Task& task = 0,
00098 const string& data = "",
00099 const string& fillOpts = "");
00100 UInt_t NewQuery(const TDbiValidityRec& vrec);
00101 UInt_t NewQuery(UInt_t seqNo,UInt_t dbNo);
00102
00103
00104 private:
00105 void Disconnect();
00106 void SetContext(const TDbiValidityRec& vrec);
00107 Bool_t ApplyAbortTest();
00108
00109
00110
00111
00112
00113
00114
00115 TDbi::AbortTest fAbortTest;
00116
00117
00118 TDbiTableProxy& fTableProxy;
00119
00120
00121
00122
00123
00124 const TDbiResultSet* fResult;
00125
00126
00127 DbiDetector::Detector_t fDetType;
00128
00129
00130 DbiSimFlag::SimFlag_t fSimType;
00131
00132 #ifndef __CINT__ // Hide map from CINT; it complains about missing Streamer() etc.
00133 static std::map<string,TDbiTableProxy*> fgNameToProxy;
00134 #endif // __CINT__
00135 static TDbiTableProxy* fgTableProxy;
00136
00137 ClassDefT(TDbiResultSetHandle<T>,0)
00138
00139 };
00140
00141 ClassDefT2(TDbiResultSetHandle,T)
00142
00143 #endif // DBIRESULTSETHANDLE_H
00144