Database Programming ATL

How to use ATL OLE/DB code with an ADO connection

.

Environment: VC++ 6, Windows 2000

This article is for Visual C++ -- OLE/DB programmers that are using ATL but must interact with components or code (from VB or even Visual C++) using ADO. Some time ago was really a problem for me to use such components without changing my code that was using ATL OLE/DB style for accessing a database.

The key code is where the ADO.s Connection is used to get a CSession:

.  .  .

GUID
IID_ACC={0x00000516,0x0000,0x0010,0x80,0x00,
         0x00,0xAA,0x00,0x6D,0x2E,0xA4};
   HRESULT hr;

   try
   {

      if(!m_pADOconnection->CreateDispatch(
         _T("ADODB.Connection"), e))
             throw e;

      CString strConnection;
      strConnection.Format("Provider=Microsoft.Jet.OLEDB.4.0;
                           DataSource=db.mdb;");

      m_pADOconnection->Open(strConnection,"admin","", 0);

      propd=m_pADOconnection->m_lpDispatch;
      hr=propd->QueryInterface(IID_ACC,(void**)&pUnk);
      if(FAILED(hr)) return hr;
      hr=((ADOConnectionConstruction15*)pUnk)->
                      get_Session(&pSession);
      if(FAILED(hr)) return hr;

      hr=pSession->QueryInterface( IID_IOpenRowset,
                                   (void**)&pOpenRowset);
      if(FAILED(hr)) return hr;
      m_pSession->m_spOpenRowset.Attach(
                           (IOpenRowset*)pOpenRowset);
   }
   catch(...)

   . . .

Downloads

Download source - 35 Kb


Comments

  • How to query.

    Posted by Legacy on 04/10/2003 12:00am

    Originally posted by: csjung

    How can i insert data and query using this code?
    eg) Inset Into mlist VALUES(~~~)
    : to insert data.
    Select * from mlist where FirstName = 'name1'
    : to query record.

    Thanks in advance.
    Jung.

    Reply
  • how to use SQL Server for this example?

    Posted by Legacy on 12/21/2001 12:00am

    Originally posted by: James


    Thanks, I have a SQL Server DB in another computer,
    its Data Source name is: DBTest

    how can I connect to it with your sample?

    James

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Today's agile organizations pose operations teams with a tremendous challenge: to deploy new releases to production immediately after development and testing is completed. To ensure that applications are deployed successfully, an automatic and transparent process is required. We refer to this process as Zero Touch Deployment™. This white paper reviews two approaches to Zero Touch Deployment--a script-based solution and a release automation platform. The article discusses how each can solve the key …

  • Learn How A Global Entertainment Company Saw a 448% ROI Every business today uses software to manage systems, deliver products, and empower employees to do their jobs. But software inevitably breaks, and when it does, businesses lose money -- in the form of dissatisfied customers, missed SLAs or lost productivity. PagerDuty, an operations performance platform, solves this problem by helping operations engineers and developers more effectively manage and resolve incidents across a company's global operations. …

Most Popular Programming Stories

More for Developers

RSS Feeds