The classes and interfaces for the OLE DB Provider Templates can be grouped into the following categories. The reference material also includes information about the macros for OLE DB Provider Templates.
The classes use the following naming convention: a class named with the pattern IWidgetImpl would provide an implementation of the interface IWidget.
Provides a default implementation for the row handle, which is used in the IRowsetImpl class. A row handle is logically a unique tag for a result row. IRowsetImpl creates a new CSimpleRow for every row requested in IRowsetImpl::GetNextRows.
OLE DB requires providers to implement an HACCESSOR, which is a tag to an array of DBBINDING structures. Provides HACCESSORs that are addresses of the BindType structures. Mandatory on rowsets and commands.
Gives information on the availability of type conversions on a command or on a rowset. Mandatory on commands, rowsets, and index rowsets. Implements the IConvertType interface by delegating to the conversion object supplied by OLE DB.
This class inherits from IObjectWithSite and overrides IObjectWithSite::SetSite. IRowsetCreatorImpl performs the same functions as IObjectWithSite but also enables the OLE DB properties DBPROPCANSCROLLBACKWARDS and DBPROPCANFETCHBACKWARDS.
Implements broadcast functions to advise listeners on the connection point IID_IRowsetNotify of changes to the contents of the rowset. Consumers that handle notifications implement IRowsetNotify and register it on that connection point.
IDBProperties is a mandatory interface for data source objects and an optional interface for enumerators. However, if an enumerator exposes IDBInitialize, it must expose IDBProperties (properties on the data source).