Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

88 lines
1.7 KiB

  1. ///////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright (c) 1998, Microsoft Corp. All rights reserved.
  4. //
  5. // FILE
  6. //
  7. // rowset.h
  8. //
  9. // SYNOPSIS
  10. //
  11. // This file declares the class Rowset.
  12. //
  13. // MODIFICATION HISTORY
  14. //
  15. // 02/20/1998 Original version.
  16. //
  17. ///////////////////////////////////////////////////////////////////////////////
  18. #ifndef _ROWSET_H_
  19. #define _ROWSET_H_
  20. #include <nocopy.h>
  21. #include <oledb.h>
  22. ///////////////////////////////////////////////////////////////////////////////
  23. //
  24. // CLASS
  25. //
  26. // Rowset
  27. //
  28. // DESCRIPTION
  29. //
  30. // This class provides a lightweight, C++ friendly wrapper around an
  31. // OLE-DB IRowset interface.
  32. //
  33. ///////////////////////////////////////////////////////////////////////////////
  34. class Rowset : NonCopyable
  35. {
  36. public:
  37. Rowset() throw ()
  38. : row(0) { }
  39. Rowset(IRowset* p) throw ()
  40. : rowset(p), row(0) { }
  41. ~Rowset() throw ()
  42. {
  43. releaseRow();
  44. }
  45. void getData(HACCESSOR hAccessor, void* pData)
  46. {
  47. _com_util::CheckError(rowset->GetData(row, hAccessor, pData));
  48. }
  49. bool moveNext();
  50. void release() throw ()
  51. {
  52. releaseRow();
  53. rowset.Release();
  54. }
  55. void reset()
  56. {
  57. _com_util::CheckError(rowset->RestartPosition(NULL));
  58. }
  59. operator IRowset*() throw ()
  60. {
  61. return rowset;
  62. }
  63. IRowset** operator&() throw ()
  64. {
  65. return &rowset;
  66. }
  67. protected:
  68. HRESULT releaseRow() throw ();
  69. CComPtr<IRowset> rowset; // The rowset being adapted.
  70. HROW row; // The current row handle.
  71. };
  72. #endif // _ROWSET_H_