00001 #ifndef __DATABASE_RESULT_SET_H__ 00002 #define __DATABASE_RESULT_SET_H__ 00003 00004 // For compilers that support precompilation, includes "wx.h". 00005 #include "wx/wxprec.h" 00006 00007 #ifdef __BORLANDC__ 00008 #pragma hdrstop 00009 #endif 00010 00011 #ifndef WX_PRECOMP 00012 #include "wx/wx.h" 00013 #endif 00014 00015 #include "wx/hashmap.h" 00016 #include "wx/hashset.h" 00017 #include "wx/datetime.h" 00018 00019 #include "DatabaseErrorReporter.h" 00020 #include "DatabaseStringConverter.h" 00021 #include "ResultSetMetaData.h" 00022 00023 WX_DECLARE_STRING_HASH_MAP(int, StringToIntMap); 00024 WX_DECLARE_HASH_SET( ResultSetMetaData*, wxPointerHash, wxPointerEqual, MetaDataHashSet ); 00025 00026 class DatabaseResultSet : public DatabaseErrorReporter, public DatabaseStringConverter 00027 { 00028 public: 00030 DatabaseResultSet(); 00031 00033 virtual ~DatabaseResultSet(); 00034 00036 virtual bool Next() = 0; 00038 virtual void Close() = 0; 00039 00040 virtual int LookupField(const wxString& strField) = 0; 00041 00042 // get field 00044 virtual int GetResultInt(int nField) = 0; 00046 virtual wxString GetResultString(int nField) = 0; 00048 virtual long GetResultLong(int nField) = 0; 00050 virtual bool GetResultBool(int nField) = 0; 00052 virtual wxDateTime GetResultDate(int nField) = 0; 00054 virtual void* GetResultBlob(int nField, wxMemoryBuffer& Buffer) = 0; 00056 virtual double GetResultDouble(int nField) = 0; 00058 virtual bool IsFieldNull(int nField) = 0; 00059 00061 virtual int GetResultInt(const wxString& strField); 00063 virtual wxString GetResultString(const wxString& strField); 00065 virtual long GetResultLong(const wxString& strField); 00067 virtual bool GetResultBool(const wxString& strField); 00069 virtual wxDateTime GetResultDate(const wxString& strField); 00071 virtual void* GetResultBlob(const wxString& strField, wxMemoryBuffer& Buffer); 00073 virtual double GetResultDouble(const wxString& strField); 00075 virtual bool IsFieldNull(const wxString& strField); 00076 00077 // get MetaData 00079 virtual ResultSetMetaData* GetMetaData() = 0; 00081 virtual bool CloseMetaData(ResultSetMetaData* pMetaData); 00082 00083 protected: 00085 void CloseMetaData(); 00087 void LogMetaDataForCleanup(ResultSetMetaData* pMetaData) { m_MetaData.insert(pMetaData); } 00088 00089 private: 00090 MetaDataHashSet m_MetaData; 00091 }; 00092 00093 #endif // __DATABASE_RESULT_SET_H__ 00094
1.4.1