AdoRecordSet.h
上传用户:xutong0099
上传日期:2009-03-19
资源大小:29k
文件大小:10k
源码类别:

数据库系统

开发平台:

Visual C++

  1. #if !defined(_ANYOU_COOL_ADORECORDSET_H)
  2. #define _ANYOU_COOL_ADORECORDSET_H
  3. #include "AdoConnection.h"
  4. /*########################################################################
  5.  ------------------------------------------------
  6.   CAdoRecordSet class
  7.  ------------------------------------------------
  8.   ########################################################################*/
  9. class CAdoRecordSet 
  10. {
  11. // 构建/折构 --------------------------------------------
  12. public:
  13. CAdoRecordSet();
  14. CAdoRecordSet(CAdoConnection *pConnection);
  15. virtual ~CAdoRecordSet();
  16. //flag form end to first
  17. BOOL SeekToFieldValue(int fieldIndex, const CString & Value ,BOOL flag);
  18. protected:
  19. void Release();
  20. // 属性 ------------------------------------------------
  21. public:
  22. // 当前编辑状态 ----------------------------
  23. EditModeEnum GetEditMode();
  24. // 当前状态 --------------------------------
  25. BOOL IsEOF();
  26. BOOL IsBOF();
  27. BOOL IsOpen();
  28. long GetState();
  29. long GetStatus();
  30. // 充许返回的最大记录数 --------------------
  31. long GetMaxRecordCount();
  32. BOOL SetMaxRecordCount(long count);
  33. // 光标位置 --------------------------------
  34. CursorLocationEnum GetCursorLocation();
  35. BOOL SetCursorLocation(CursorLocationEnum CursorLocation = adUseClient);
  36. // 光标类型 --------------------------------
  37. CursorTypeEnum GetCursorType();
  38. BOOL SetCursorType(CursorTypeEnum CursorType = adOpenStatic);
  39. // 书签 --------------------------------
  40. _variant_t GetBookmark();
  41. BOOL SetBookmark(_variant_t varBookMark = _variant_t((long)adBookmarkFirst));
  42. // 当前记录位置 ------------------------
  43. long GetAbsolutePosition();
  44. BOOL SetAbsolutePosition(int nPosition);
  45. long GetAbsolutePage();
  46. BOOL SetAbsolutePage(int nPage);
  47. // 每页的记录数 ------------------------
  48. long GetPageSize();
  49. BOOL SetCacheSize(const long& lCacheSize);
  50. // 页数 --------------------------------
  51. long GetPageCount();
  52. // 记录数及字段数 ----------------------
  53. long GetRecordCount();
  54. long GetFieldsCount();
  55. // 字段值在记录集合中的位置 --------------------------
  56. int GetFieldIndex(CString filedName);
  57. // 光标的位置 --------------------------
  58. long GetCursorPos();
  59. // 查询字符串 --------------------------
  60. CString GetSQLText() {return m_strSQL;}
  61. void SetSQLText(LPCTSTR strSQL) {m_strSQL = strSQL;}
  62. // 连接对象 ----------------------------
  63. CAdoConnection* GetConnection() {return m_pConnection;}
  64. void SetAdoConnection(CAdoConnection *pConnection);
  65. // 记录集对象 --------------------------
  66. _RecordsetPtr& GetRecordset();
  67. CString GetLastError();
  68. // 字段属性 ----------------------------------------------
  69. public:
  70. // 字段集 -------------------------------
  71. FieldsPtr GetFields();
  72. // 字段对象 -----------------------------
  73. FieldPtr  GetField(long lIndex);
  74. FieldPtr  GetField(LPCTSTR lpszFieldName);
  75. // 字段名 -------------------------------
  76. CString GetFieldName(long lIndex);
  77. // 字段数据类型 -------------------------
  78. DataTypeEnum GetFieldType(long lIndex);
  79. DataTypeEnum GetFieldType(LPCTSTR lpszFieldName);
  80. // 字段属性 -----------------------------
  81. long  GetFieldAttributes(long lIndex);
  82. long  GetFieldAttributes(LPCTSTR lpszFieldName);
  83. // 字段定义长度 -------------------------
  84. long  GetFieldDefineSize(long lIndex);
  85. long  GetFieldDefineSize(LPCTSTR lpszFieldName);
  86. // 字段实际长度 -------------------------
  87. long  GetFieldActualSize(long lIndex);
  88. long  GetFieldActualSize(LPCTSTR lpszFieldName);
  89. // 字段是否为NULL -----------------------
  90. BOOL  IsFieldNull(long index);
  91. BOOL  IsFieldNull(LPCTSTR lpFieldName);
  92. // 记录更改 --------------------------------------------
  93. public:
  94. BOOL AddNew();
  95. BOOL Update();
  96. BOOL UpdateBatch(AffectEnum AffectRecords = adAffectAll); 
  97. BOOL CancelUpdate();
  98. BOOL CancelBatch(AffectEnum AffectRecords = adAffectAll);
  99. BOOL Delete(AffectEnum AffectRecords = adAffectCurrent);
  100. // 刷新记录集中的数据 ------------------
  101. BOOL Requery(long Options = adConnectUnspecified);
  102. BOOL Resync(AffectEnum AffectRecords = adAffectAll, ResyncEnum ResyncValues = adResyncAllValues);   
  103. BOOL RecordBinding(CADORecordBinding &pAdoRecordBinding);
  104. BOOL AddNew(CADORecordBinding &pAdoRecordBinding);
  105. // 记录集导航操作 --------------------------------------
  106. public:
  107. BOOL MoveFirst();
  108. BOOL MovePrevious();
  109. BOOL MoveNext();
  110. BOOL MoveLast();
  111. BOOL Move(long lRecords, _variant_t Start = _variant_t((long)adBookmarkFirst));
  112. // 查找指定的记录 ----------------------
  113. BOOL Find(LPCTSTR lpszFind, SearchDirectionEnum SearchDirection = adSearchForward);
  114. BOOL FindNext();
  115. // 查询 ------------------------------------------------
  116. public:
  117. BOOL Open(LPCTSTR strSQL, long lOption = adCmdText, CursorTypeEnum CursorType = adOpenStatic, LockTypeEnum LockType = adLockOptimistic);
  118. BOOL Cancel();
  119. void Close();
  120. // 保存/载入持久性文件 -----------------
  121. BOOL Save(LPCTSTR strFileName = _T(""), PersistFormatEnum PersistFormat = adPersistXML);
  122. BOOL Load(LPCTSTR strFileName);
  123. // 字段存取 --------------------------------------------
  124. public:
  125. BOOL PutCollect(long index, const _variant_t &value);
  126. BOOL PutCollect(long index, const CString &value);
  127. BOOL PutCollect(long index, const double &value);
  128. BOOL PutCollect(long index, const float  &value);
  129. BOOL PutCollect(long index, const long   &value);
  130. BOOL PutCollect(long index, const DWORD  &value);
  131. BOOL PutCollect(long index, const int    &value);
  132. BOOL PutCollect(long index, const short  &value);
  133. BOOL PutCollect(long index, const BYTE   &value);
  134. BOOL PutCollect(long index, const bool   &value);
  135. BOOL PutCollect(long index, const COleDateTime &value);
  136. BOOL PutCollect(long index, const COleCurrency &value);
  137. BOOL PutCollect(LPCTSTR strFieldName, const _variant_t &value);
  138. BOOL PutCollect(LPCTSTR strFieldName, const CString &value);
  139. BOOL PutCollect(LPCTSTR strFieldName, const double &value);
  140. BOOL PutCollect(LPCTSTR strFieldName, const float  &value);
  141. BOOL PutCollect(LPCTSTR strFieldName, const long   &value);
  142. BOOL PutCollect(LPCTSTR strFieldName, const DWORD  &value);
  143. BOOL PutCollect(LPCTSTR strFieldName, const int    &value);
  144. BOOL PutCollect(LPCTSTR strFieldName, const short  &value);
  145. BOOL PutCollect(LPCTSTR strFieldName, const BYTE   &value);
  146. BOOL PutCollect(LPCTSTR strFieldName, const bool   &value);
  147. BOOL PutCollect(LPCTSTR strFieldName, const COleDateTime &value);
  148. BOOL PutCollect(LPCTSTR strFieldName, const COleCurrency &value);
  149. // ---------------------------------------------------------
  150. BOOL GetCollect(long index, CString &value);
  151. BOOL GetCollect(long index, double  &value);
  152. BOOL GetCollect(long index, float   &value);
  153. BOOL GetCollect(long index, long    &value);
  154. BOOL GetCollect(long index, DWORD   &value);
  155. BOOL GetCollect(long index, int     &value);
  156. BOOL GetCollect(long index, short   &value);
  157. BOOL GetCollect(long index, BYTE    &value);
  158. BOOL GetCollect(long index, bool   &value);
  159. BOOL GetCollect(long index, COleDateTime &value);
  160. BOOL GetCollect(long index, COleCurrency &value);
  161. BOOL GetCollect(LPCSTR strFieldName, CString &strValue);
  162. BOOL GetCollect(LPCSTR strFieldName, double &value);
  163. BOOL GetCollect(LPCSTR strFieldName, float  &value);
  164. BOOL GetCollect(LPCSTR strFieldName, long   &value);
  165. BOOL GetCollect(LPCSTR strFieldName, DWORD  &value);
  166. BOOL GetCollect(LPCSTR strFieldName, int    &value);
  167. BOOL GetCollect(LPCSTR strFieldName, short  &value);
  168. BOOL GetCollect(LPCSTR strFieldName, BYTE   &value);
  169. BOOL GetCollect(LPCSTR strFieldName, bool   &value);
  170. BOOL GetCollect(LPCSTR strFieldName, COleDateTime &value);
  171. BOOL GetCollect(LPCSTR strFieldName, COleCurrency &value);
  172. // 群组获取记录集合值 ------------------------------------------
  173. BOOL GetFieldValues(CStringArray *array, CString fieldName,BOOL lockCursorPos = FALSE,int maxRows = 100);
  174. BOOL GetFieldValues(CStringArray *array, int index ,BOOL lockCursorPos = FALSE,int maxRows = 100);
  175. int GetFieldValues(double *Array, int size, int index, BOOL lockCursorPos = FALSE, int maxRows = 100);
  176. int GetFieldValues(double *Array, int size, CString fieldName, BOOL lockCursorPos = FALSE, int maxRows = 100);
  177. int GetFieldValues(COleDateTime *Array, int size, int index, BOOL lockCursorPos = FALSE, int maxRows = 100);
  178. int GetFieldValues(COleDateTime *Array, int size, CString fieldName, BOOL lockCursorPos = FALSE, int maxRows = 100);
  179. int GetFieldValues(int * Array,int size , int index,BOOL lockCursorPos = FALSE,int maxRows =100);
  180. int GetFieldValues(int * Array,int size , CString fieldName,BOOL lockCursorPos = FALSE,int maxRows =100);
  181. // BLOB 数据存取 ------------------------------------------
  182. BOOL LoadOLEDataFromDB(CString CreateFileName ,CString feildName);
  183. BOOL AppendChunk(FieldPtr pField, LPVOID lpData, UINT nBytes);
  184. BOOL AppendChunk(long index, LPVOID lpData, UINT nBytes);
  185. BOOL AppendChunk(LPCSTR strFieldName, LPVOID lpData, UINT nBytes);
  186. BOOL AppendChunk(long index, LPCTSTR lpszFileName);
  187. BOOL AppendChunk(LPCSTR strFieldName, LPCTSTR lpszFileName);
  188. BOOL GetChunk(FieldPtr pField, LPVOID lpData);
  189. BOOL GetChunk(long index, LPVOID lpData);
  190. BOOL GetChunk(LPCSTR strFieldName, LPVOID lpData);
  191. BOOL GetChunk(long index, CBitmap &bitmap);
  192. BOOL GetChunk(LPCSTR strFieldName, CBitmap &bitmap);
  193. // 其他方法 --------------------------------------------
  194. public:
  195. // 过滤记录 ---------------------------------
  196. BOOL SetFilter(LPCTSTR lpszFilter);
  197. // 排序 -------------------------------------
  198. BOOL SetSort(LPCTSTR lpszCriteria);
  199. // 测试是否支持某方法 -----------------------
  200. BOOL Supports(CursorOptionEnum CursorOptions = adAddNew);
  201. // 克隆 -------------------------------------
  202. BOOL Clone(CAdoRecordSet &pRecordSet);
  203. _RecordsetPtr operator = (_RecordsetPtr &pRecordSet);
  204. // 格式化 _variant_t 类型值 -----------------
  205. //成员变量 --------------------------------------------
  206. protected:
  207. CAdoConnection     *m_pConnection;
  208. _RecordsetPtr m_pRecordset;
  209. CString m_strSQL;
  210. CString m_strFind;
  211. CString m_strFileName;
  212. IADORecordBinding *m_pAdoRecordBinding;
  213. SearchDirectionEnum m_SearchDirection;
  214. public:
  215. _variant_t m_varBookmark;
  216. };
  217. //________________________________________________________________________
  218. #endif //_ANYOU_COOL_ADORECORDSET_H