INFO: Using ActiveX Data Objects (ADO) via MFC OLE in VC++
ID: Q175993
|
The information in this article applies to:
-
ActiveX Data Objects (ADO), versions 1.0, 1.5, 2.0
SUMMARY
The Microsoft Foundation Classes (MFC) OLE Classes offer a powerful way for Visual C++ 4.x, and 5.0 developers to use the ActiveX Data Objects (ADO) typelib and manipulate ADO objects. This article discusses how to take advantage of MFC-OLE with ADO.
MORE INFORMATION
Before Instantiating any Classes Created by MFC-OLE
It is important to initialize OLE before creating any instances of classes
created by MFC-OLE. One way to initialize OLE is with the following code
snippet:
struct InitOle {
InitOle() { ::CoInitialize(NULL); }
~InitOle() { ::CoUninitialize(); }
} _init_InitOle_;
If you have any global BSTR's this is also a good place to allocate and
deallocate them.
Error Handling
With ADO, you may receive an error in the HRESULT returned from an ADO
method, however, this value is not raised/returned by the MFC-OLE classes.
You may receive a COleException or COleDispatchException. You should also
check the member variable m_lpDispatch for any class derived from
ColeDispatchDriver. If the member variable is NULL you should not continue
executing methods of an ADO object. It is possible, for example, to
generate a series of nested exceptions, which even try/catch(...)blocks
cannot catch. (To see this, take the ADOVC sample mentioned below, and
change the PROGID in the Connection object's CreateDispatch() call to
something invalid.)
The ADOVC sample demonstrates how to catch exceptions/errors with ADO. For
additional information, please see the following article in the Microsoft
Knowledge Base:
Q174565 FILE: Adovc.exe Demonstrates How to Use ADO with Visual C++
Passing the License Key to ADO and ADO Redistribution
ADO 1.0 does require a license key when run on any system that has ADO
installed in a mechanism other than a Microsoft product. Unlike other
mechanisms within Visual C++, that work without passing a license key
as long as that license key exists in the registry, MFC-OLE requires
your ADO 1.0 based code to ALWAYS pass a license key.
REFERENCES
"Inside COM", Dale Rogerson, Microsoft Press, February 1997, (ISBN 1-57231-349-8)
For more information, please see the following article in the Microsoft Knowledge Base:
Q168354 INFO: Underlying OLE and OLEDB Provider Errors Exposed via ADO
Additional query words:
noupdate s_mfc kbdse
Keywords : kbADO kbDatabase
Version : WINDOWS:1.0,1.5,2.0
Platform : WINDOWS
Issue type : kbinfo
Last Reviewed: March 4, 1999