Supported OLE DB Interfaces

Important

This feature will be removed in a future version of Windows. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Instead, write a fully functional OLE DB provider using the native OLE DB interfaces.

Data Source Object

Interface

Description

IConnectionPointContainer

When implemented on an object, makes the object connectable and expresses the existence of outgoing interfaces on the object. Through this interface a client can either locate a specific connection point for one IID or enumerate the connection points that exist. This is a COM interface, not an OLE DB interface. For more information, refer to the OLE DB Programmer's Reference.

IDBAsynchStatus

Polls for status or cancels the asynchronous operation on the object being initialized, generated, or populated.

IDBCreateSession

Used by consumers to create a new session on a data source object.

IDBInitialize

Initializes a data source object or enumerator.

IDBProperties

Sets and gets the values of properties on the data source object or enumerator and gets all information about all properties supported by the provider.

IPersist

An interface that is implemented by object applications and used by container applications to get the CLSID associated with an object.

ISupportErrorInfo

Indicates whether a specific interface can return COM and OLE DB error objects.

Session Object

Interface

Description and Notes

IGetDataSource

Mandatory interface on the session for obtaining a data source object.

IOpenRowset

Enables consumers to open and work directly with individual tables or indexes in a data source.

When using IOpenRowset::OpenRowset against an OLE DB provider written with the OSP Toolkit, you can issue OpenRowset only once for each OSP. The second call will fail with a status code of E_FAIL.

If no data member is specified on IOpenRowset::OpenRowset ? because no registration settings have been entered, or because no data source initialization property has been set ? Msdaosp.dll returns the error DB_E_NOTABLE, which indicates that the table does not exist in the current data source.

ISessionProperties

Performs row updates, deletes, and inserts.

ISupportErrorInfo

Indicates whether a specific interface can return Automation and OLE DB error objects.

Rowset Object

Interface

Description

IAccessor

Provides methods for accessor management.

IColumnsInfo

Exposes information about columns of a rowset. (See Note below.)

IConnectionPointContainer

When implemented on an object, makes the object connectable and expresses the existence of outgoing interfaces on the object. Through this interface a client can either locate a specific connection point for one IID or enumerate the connection points that exist. This is a COM interface, not an OLE DB interface. For more information, refer to the OLE DB Programmer's Reference.

IConvertType

Provides information about the availability of type conversions on a rowset.

IDBAsynchStatus

Polls for status or cancels the asynchronous operation on the object being initialized, generated, or populated.

IRowset

Provides methods for fetching rows sequentially, getting the data from those rows, and managing the rows.

IRowsetChange

Performs row updates, deletes, and inserts.

IRowsetFind

Allows consumers to find a row within the rowset matching a specified value.

IRowsetIdentity

Indicates that row instance identity is implemented on the rowset and enables testing for row identity.

IRowsetInfo

Provides information about a rowset.

IRowsetLocate

Fetches arbitrary rows of a rowset.

IRowsetScroll

Enables consumers to fetch rows at approximate positions in the rowset.

ISupportErrorInfo

Indicates whether a specific interface can return Automation and OLE DB error objects.

Note

The OSP implementation of the IColumnsInfo::GetColumnInfo method initializes DBCOLUMNSINFO structures as follows.

For the bookmark column:

Column ID (DBID) ? As described in the section Bookmarks, where DBID.eKind is set to DBKIND_GUID_PROPID

wType ? DBTYPE_I4 for a 32-bit OS, or DBTYPE_I8 for a 64-bit OS

uColumnSize ? DBBKMARK, which is 4 for a 32-bit OS, or 8 for a 64-bit OS

bPrecision ? 10

bScale ? ~0 (all ones; no scale)

dwFlags ? DBCOLUMNFLAGS_ISBOOKMARK | DBCOLUMNFLAGS_ISFIXEDLENGTH | DBCOLUMNFLAGS_MAYDEFER

For all other columns:

iOrdinal ? A number starting from 1

DBID.eKind ? DBKIND_PROPID

DBID.uName.ulPropid ? A number equal to 100+iOrdinal

wType ? DBTYPE_VARIANT

ulColumnSize ? The size of a VARIANT (16)

bPrecision ? ~0 (all ones; no precision)

bScale ? ~0 (all ones; no scale)

dwFlags ? DBCOLUMNFLAGS_ISFIXEDLENGTH | DBCOLUMNFLAGS_MAYDEFER | DBCOLUMNFLAGS_MAYBENULL | DBCOLUMNFLAGS_ISNULLABLE

If the OSP getRWStatus method reports the column is not OSPRW_READONLY, dwFlags is also marked DBCOLUMNFLAGS_WRITE.

If the column is a chapter column, wType is set to DBTYPE_HCHAPTER, dwFlags is marked DBCOLUMNFLAGS_ISCHAPTER, and ulColumnSize is set to the size of a pointer to IUnknown.

The column name is stored in **ppStringsBuffer.

Notification Interfaces for Rowset Object

Interface

Description

IDBAsynchNotify

The callback interface that a consumer must support to be notified of the progress of asynchronous operations such as initializing a data source object or opening or populating a rowset.

IRowsetNotify

The callback interface that a consumer must support to connect to local notifications provided by a rowset.