OLEDBDirConsumerSet.h
上传用户:benben_wyd
上传日期:2010-02-26
资源大小:1229k
文件大小:3k
源码类别:

书籍源码

开发平台:

Visual C++

  1. // OLEDBDirConsumerSet.h : interface of the COLEDBDirConsumerSet class
  2. //
  3. /////////////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_OLEDBDIRCONSUMERSET_H__76BD4173_A1B6_11D2_9949_A3461EC15C47__INCLUDED_)
  5. #define AFX_OLEDBDIRCONSUMERSET_H__76BD4173_A1B6_11D2_9949_A3461EC15C47__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. class CMy
  10. {
  11. public:
  12.     CMy() 
  13.     {
  14.         memset( (void*)this, 0, sizeof(*this) );
  15.     };
  16. /*  Old Structure
  17.     char m_column0[261];
  18.     char m_column1[15];
  19.     unsigned int m_column2;
  20.     char m_column3[8];
  21. */
  22.     char m_strFileName[261];
  23.     char m_strShortFileName[15];
  24.     unsigned int m_nFileSize;
  25.     char m_strFileAttributes[8];
  26. BEGIN_COLUMN_MAP(CMy)
  27. /* Old map
  28.     COLUMN_ENTRY_TYPE(1, DBTYPE_STR, m_column0)
  29.     COLUMN_ENTRY_TYPE(2, DBTYPE_STR, m_column1)
  30.     COLUMN_ENTRY_TYPE(3, DBTYPE_UI4, m_column2)
  31.     COLUMN_ENTRY_TYPE(4, DBTYPE_STR, m_column3)
  32. */    
  33.     COLUMN_ENTRY_TYPE(1, DBTYPE_STR, m_strFileName)
  34.     COLUMN_ENTRY_TYPE(2, DBTYPE_STR, m_strShortFileName)
  35.     COLUMN_ENTRY_TYPE(3, DBTYPE_UI4, m_nFileSize)
  36.     COLUMN_ENTRY_TYPE(4, DBTYPE_STR, m_strFileAttributes)
  37. END_COLUMN_MAP()
  38. };
  39. class COLEDBDirConsumerSet : public CCommand<CAccessor<CMy> >
  40. {
  41. protected:
  42. CString m_strDirectory;
  43. public:
  44. COLEDBDirConsumerSet() {
  45. //Initialize directory
  46. m_strDirectory = _T("C:\*.*");
  47. }
  48. void SetDir(CString dirName) {
  49. //Reset Directory
  50. if (dirName != GetDir()) {
  51. Close();
  52. m_strDirectory = dirName;
  53. Open();
  54. }
  55. }
  56. CString GetDir() {
  57. return m_strDirectory;
  58. }
  59. HRESULT Open()
  60. {
  61. CDataSource db;
  62. CSession session;
  63. HRESULT hr;
  64. CDBPropSet dbinit(DBPROPSET_DBINIT);
  65. dbinit.AddProperty(DBPROP_AUTH_PASSWORD, "");
  66. dbinit.AddProperty(DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO, false);
  67. dbinit.AddProperty(DBPROP_AUTH_USERID, "");
  68. dbinit.AddProperty(DBPROP_INIT_DATASOURCE, "");
  69. dbinit.AddProperty(DBPROP_INIT_LCID, (long)0);
  70. dbinit.AddProperty(DBPROP_INIT_LOCATION, "");
  71. dbinit.AddProperty(DBPROP_INIT_MODE, (long)0);
  72. dbinit.AddProperty(DBPROP_INIT_PROMPT, (short)2);
  73. dbinit.AddProperty(DBPROP_INIT_PROVIDERSTRING, "");
  74. dbinit.AddProperty(DBPROP_INIT_TIMEOUT, (long)0);
  75. hr = db.OpenWithServiceComponents("OLEDBDirProvider.DirProvider.1", &dbinit);
  76. if (FAILED(hr))
  77. return hr;
  78. hr = session.Open(db);
  79. if (FAILED(hr))
  80. return hr;
  81. CDBPropSet propset(DBPROPSET_ROWSET);
  82. propset.AddProperty(DBPROP_CANFETCHBACKWARDS, true);
  83. propset.AddProperty(DBPROP_IRowsetScroll, true);
  84. propset.AddProperty(DBPROP_IRowsetChange, true);
  85. // propset.AddProperty(DBPROP_UPDATABILITY, DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_INSERT | DBPROPVAL_UP_DELETE );
  86. hr = CCommand<CAccessor<CMy> >::Open(session, m_strDirectory, &propset);
  87. if (FAILED(hr))
  88. return hr;
  89. return MoveNext();
  90. }
  91. };
  92. //{{AFX_INSERT_LOCATION}}
  93. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  94. #endif // !defined(AFX_OLEDBDIRCONSUMERSET_H__76BD4173_A1B6_11D2_9949_A3461EC15C47__INCLUDED_)