ADOX创建Access用户和组

// BeginGroupCpp.cpp
// compile with: /EHsc
#import "msadox.dll" no_namespace

#include "iostream"
using namespace std;

inline void TESTHR(HRESULT x) {if FAILED(x) _com_issue_error(x);};

int main() {
   if (FAILED(::CoInitialize(NULL)) )
      return -1;

   HRESULT hr = S_OK;

   // Define and initialize ADOX object pointers. These are in ADODB namespace.
   _CatalogPtr m_pCatalog = NULL;
   _UserPtr m_pUserNew = NULL;
   _UserPtr m_pUser = NULL;
   _GroupPtr m_pGroup = NULL;

   // Define String Variables.
   _bstr_t strCnn("Provider=Microsoft.Jet.OLEDB.4.0;User ID=myUsername;Data Source=C:/mydatabase.mdb;Jet OLEDB:Password=myPassword;Jet OLEDB:System Database=system.mdw;");

   try {
      TESTHR(hr = m_pCatalog.CreateInstance(__uuidof (Catalog)));
      m_pCatalog->PutActiveConnection(strCnn);

      // Create and append new group with a string.
      m_pCatalog->Groups->Append("Accounting");

      // Create and append new user with an object.
      TESTHR(hr = m_pUserNew.CreateInstance(__uuidof(User)));
      m_pUserNew->PutName("Pat Smith");
      m_pUserNew->ChangePassword("", "Password1");
      m_pCatalog->Users->Append(_variant_t((IDispatch *)m_pUserNew), "");

      // Make the user Pat Smith a member of the Accounting group by creating and adding the
      // appropriate Group object to the user's Groups collection. The same is accomplished if a User
      // object representing Pat Smith is created and appended to the Accounting group Users collection
      m_pUserNew->Groups->Append("Accounting");

      // Enumerate all User objects in the catalog's Users collection.
      long lUsrIndex;
      long lGrpIndex;
      _variant_t vIndex;
      for ( lUsrIndex = 0 ; lUsrIndex < m_pCatalog->Users->Count ; lUsrIndex++ ) {
         vIndex = lUsrIndex;
         m_pUser = m_pCatalog->Users->GetItem(vIndex);
         cout << "  " << m_pUser->Name << endl;
         cout << "   Belongs to these groups:" << endl;

         // Enumerate all Group objects in each User object's Groups collection.
         if (m_pUser->Groups->Count != 0)
            for ( lGrpIndex = 0 ; lGrpIndex < m_pUser->Groups->Count ; lGrpIndex++ ) {
               vIndex = lGrpIndex;
               m_pGroup = m_pUser->Groups->GetItem(vIndex);
               cout << "     " << m_pGroup->Name << endl;
            }
         else
            cout << "       [None]" << endl;
      }

      // Enumerate all Group objects in the default workspace's Groups collection.
      for ( lGrpIndex = 0 ; lGrpIndex < m_pCatalog->Groups->Count ; lGrpIndex++ ) {
         vIndex = lGrpIndex;
         m_pGroup = m_pCatalog->Groups->GetItem(vIndex);
         cout << "   " << m_pGroup->Name << endl;
         cout << "    Has as its members:" << endl;

         // Enumerate all User objects in each Group object's Users Collection.
         if ( m_pGroup->Users->Count != 0)
            for ( lUsrIndex = 0 ; lUsrIndex < m_pGroup->Users->Count ; lUsrIndex++ ) {
               vIndex = lUsrIndex;
               m_pUser = m_pGroup->Users->GetItem(vIndex);
               cout << "    " << m_pUser->Name << endl;
            }
         else
            cout << "      [None]" << endl;
      }

      // Delete new User and Group object because this is only a demonstration.
      m_pCatalog->Users->Delete("Pat Smith");
      m_pCatalog->Groups->Delete("Accounting");
   }
   catch(_com_error &e) {
      // Notify the user of errors if any.
      _bstr_t bstrSource(e.Source());
      _bstr_t bstrDescription(e.Description());

      printf("/n/tSource :  %s /n/tdescription : %s /n ", (LPCSTR)bstrSource, (LPCSTR)bstrDescription);
   }
   catch(...) {
      cout << "Error occured in include files...." << endl;
   }

   ::CoUninitialize();
}

 

http://msdn.microsoft.com/en-us/library/ms676686(VS.85).aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值