OLE DB Programming OLE DB Programming Overview OLE DB Consumers and Providers OLE DB Object Model OLE DB Templates, Attributes, and Other Implementations OLE DB Architectural Design Issues OLE DB Consumer Templates (C++) Data Sources and Sessions Accessors and Rowsets Commands and Tables User Records Schema Rowsets Creating an OLE DB Consumer Creating an OLE DB Consumer Using a Wizard Creating a Simple Consumer Implementing a Simple Consumer Consumer Wizard-Generated Classes Consumer Wizard-Generated Methods Creating a Consumer Without Using a Wizard Working with OLE DB Consumer Templates Simplifying Data Access with Database Attributes Field Status Data Members in Wizard-Generated Accessors Traversing a Simple Rowset Issuing a Parameterized Query Fetching Data Updating Rowsets Using Stored Procedures Defining Stored Procedures Output Parameters Using Multiple Result Sets from One Stored Procedure Using Accessors Determining Which Type of Accessor to Use Using Multiple Accessors on a Rowset Using Dynamic Accessors Overriding a Dynamic Accessor Using Manual Accessors Accessing XML Data Obtaining Metadata with Schema Rowsets Supporting Transactions in OLE DB Using OLE DB Record Views Using an Existing ADO Recordset Updating a Column When Another Table Contains a Reference to the Row Using Bookmarks Retrieving a BLOB Receiving Notifications OLE DB Provider Templates (C++) OLE DB Provider Template Architecture Data Source Object Interfaces Session Object Interfaces Rowset Object Interfaces Command Object Interfaces Transaction Object Interfaces Property Maps User Record Creating an OLE DB Provider Creating a Project for the Provider Creating the Provider Provider Wizard-Generated Files CMyProviderSource (MyProviderDS.H) CMyProviderSession (MyProviderSess.H) CMyProviderCommand (MyProviderRS.H) CMyProviderRowset (MyProviderRS.H) CMyProviderWindowsFile Creating a Simple Read-Only Provider Implementing the Simple Read-Only Provider Reading Strings into the OLE DB Provider Storing Strings in the OLE DB Provider Enhancing the Simple Read-Only Provider Modifying the Inheritance of RMyProviderRowset Dynamically Determining Columns Returned to the Consumer Testing the Read-Only Provider Creating an Updatable Provider Working with OLE DB Provider Templates Adding an Interface to Your Provider Referencing a Property in Your Provider Setting Properties in Your Provider Dynamically Binding Columns in Your Provider Supporting Free Threading in Your Provider Testing Your Provider Debugging Your Provider Converting Data Not Supported by the Provider Advanced Provider Techniques Supporting Notifications Supporting Schema Rowsets Provider Support for Bookmarks Passing OLE DB Conformance Tests OLE DB Resource Pooling and Services Resource Pooling in Your OLE DB Application Enabling and Disabling OLE DB Services Enabling and Disabling Services for a Provider Overriding Provider Service Defaults OLE DB Templates OLE DB Consumer Templates Reference CAccessor Class CAccessorBase Class CAccessorBase::Close CAccessorBase::GetHAccessor CAccessorBase::GetNumAccessors CAccessorBase::IsAutoAccessor CAccessorBase::ReleaseAccessors CAccessorRowset Class CAccessorRowset Members CAccessorRowset Methods CAccessorRowset::Bind CAccessorRowset::CAccessorRowset CAccessorRowset::Close CAccessorRowset::FreeRecordMemory CAccessorRowset::GetColumnInfo CArrayRowset Class CArrayRowset::CArrayRowset CArrayRowset::m_nRowsRead CArrayRowset::operator CArrayRowset::Snapshot CBookmark Class CBookmark::CBookmark CBookmark::GetBuffer CBookmark::GetSize CBookmark::operator = CBookmark::SetBookmark CBulkRowset Class CBulkRowset::AddRefRows CBulkRowset::CBulkRowset CBulkRowset::MoveFirst CBulkRowset::MoveLast CBulkRowset::MoveNext CBulkRowset::MovePrev CBulkRowset::MoveToBookmark CBulkRowset::MoveToRatio CBulkRowset::ReleaseRows CBulkRowset::SetRows CColumnAccessor Class CCommand Class CCommand::Close CCommand::Create CCommand::CreateCommand CCommand::GetNextResult CCommand::GetParameterInfo CCommand::Open CCommand::Prepare CCommand::ReleaseCommand CCommand::SetParameterInfo CCommand::Unprepare CDataConnection Class CDataConnection::CDataConnection CDataConnection::Copy CDataConnection::Open CDataConnection::OpenNewSession CDataConnection::operator BOOL CDataConnection::operator bool (OLE DB) CDataConnection::operator CDataSource& CDataConnection::operator CDataSource* CDataConnection::operator CSession& CDataConnection::operator CSession* CDataSource Class CDataSource::Close CDataSource::GetInitializationString CDataSource::GetProperties CDataSource::GetProperty CDataSource::Open CDataSource::OpenFromFileName CDataSource::OpenFromInitializationString CDataSource::OpenWithPromptFileName CDataSource::OpenWithServiceComponents CDBErrorInfo Class CDBErrorInfo::GetAllErrorInfo CDBErrorInfo::GetBasicErrorInfo CDBErrorInfo::GetCustomErrorObject CDBErrorInfo::GetErrorInfo CDBErrorInfo::GetErrorParameters CDBErrorInfo::GetErrorRecords CDBPropIDSet Class CDBPropIDSet::AddPropertyID CDBPropIDSet::CDBPropIDSet CDBPropIDSet::operator = CDBPropIDSet::SetGUID CDBPropSet Class CDBPropSet::AddProperty CDBPropSet::CDBPropSet CDBPropSet::operator = CDBPropSet::SetGUID CDynamicAccessor Class CDynamicAccessor::AddBindEntry CDynamicAccessor::CDynamicAccessor CDynamicAccessor::Close CDynamicAccessor::GetBlobHandling CDynamicAccessor::GetBlobSizeLimit CDynamicAccessor::GetBookmark CDynamicAccessor::GetColumnCount CDynamicAccessor::GetColumnFlags CDynamicAccessor::GetColumnInfo CDynamicAccessor::GetColumnName CDynamicAccessor::GetColumnType CDynamicAccessor::GetLength CDynamicAccessor::GetOrdinal CDynamicAccessor::GetStatus CDynamicAccessor::GetValue CDynamicAccessor::SetBlobHandling CDynamicAccessor::SetBlobSizeLimit CDynamicAccessor::SetLength CDynamicAccessor::SetStatus CDynamicAccessor::SetValue CDynamicParameterAccessor Class CDynamicParameterAccessor::CDynamicParameterAccessor CDynamicParameterAccessor::GetParam CDynamicParameterAccessor::GetParamCount CDynamicParameterAccessor::GetParamIO CDynamicParameterAccessor::GetParamLength CDynamicParameterAccessor::GetParamName CDynamicParameterAccessor::GetParamStatus CDynamicParameterAccessor::GetParamString CDynamicParameterAccessor::GetParamType CDynamicParameterAccessor::SetParam CDynamicParameterAccessor::SetParamLength CDynamicParameterAccessor::SetParamStatus CDynamicParameterAccessor::SetParamString CDynamicStringAccessor Class CDynamicStringAccessor::GetString CDynamicStringAccessor::SetString CDynamicStringAccessorA Class CDynamicStringAccessorW Class CEnumerator Class CEnumerator::Find CEnumerator::GetMoniker CEnumerator::Open CEnumeratorAccessor Class CEnumeratorAccessor::m_bIsParent CEnumeratorAccessor::m_nType CEnumeratorAccessor::m_szDescription CEnumeratorAccessor::m_szName CEnumeratorAccessor::m_szParseName CManualAccessor Class CManualAccessor::AddBindEntry CManualAccessor::AddParameterEntry CManualAccessor::CreateAccessor CManualAccessor::CreateParameterAccessor CMultipleResults Class CNoAccessor Class CNoMultipleResults Class CNoRowset Class CRestrictions Class CRestrictions::Open CRowset Class CRowset::AddRefRows CRowset::Close CRowset::Compare CRowset::CRowset CRowset::Delete CRowset::FindNextRow CRowset::GetApproximatePosition CRowset::GetData CRowset::GetDataHere CRowset::GetOriginalData CRowset::GetRowStatus CRowset::Insert CRowset::IsSameRow CRowset::MoveFirst CRowset::MoveLast CRowset::MoveNext CRowset::MovePrev CRowset::MoveToBookmark CRowset::MoveToRatio CRowset::ReleaseRows CRowset::SetData CRowset::Undo CRowset::Update CRowset::UpdateAll CSession Class CSession::Abort CSession::Close CSession::Commit CSession::GetTransactionInfo CSession::Open CSession::StartTransaction CStreamRowset Class CStreamRowset::Close CStreamRowset::CStreamRowset CTable Class CTable::Open CXMLAccessor Class CXMLAccessor::GetXMLColumnData CXMLAccessor::GetXMLRowData IRowsetNotifyImpl Class IRowsetNotifyImpl::OnFieldChange IRowsetNotifyImpl::OnRowChange IRowsetNotifyImpl::OnRowsetChange Schema Rowset Classes and Typedef Classes CAssertions, CAssertionInfo CCatalogs, CCatalogInfo CCharacterSets, CCharacterSetInfo CCheckConstraints, CCheckConstraintInfo CCollations, CCollationInfo CColumnDomainUsage, CColumnDomainUsageInfo CColumnPrivileges, CColumnPrivilegeInfo CColumns, CColumnsInfo CConstraintColumnUsage, CConstraintColumnUsageInfo CConstraintTableUsage, CConstraintTableUsageInfo CForeignKeys, CForeignKeysInfo CIndexes, CIndexInfo CKeyColumns, CKeyColumnInfo CPrimaryKeys, CPrimaryKeyInfo CProcedureColumns, CProcedureColumnInfo CProcedureParameters CProcedureParamInfo CProcedures, CProcedureInfo CProviderTypes, CProviderInfo CReferentialConstraints, CReferentialConstraintInfo CSchemata, CSchemataInfo CSQLLanguages, CSQLLanguageInfo CStatistics, CStatisticInfo CTableConstraints, CTableConstraintInfo CTablePrivileges, CTablePrivilegeInfo CTables, CTableInfo CTranslations, CTranslationInfo CUsagePrivileges, CUsagePrivilegeInfo CViewColumnUsage, CViewColumnInfo CViews, CViewInfo CViewTableUsage, CViewTableInfo Macros and Global Functions for OLE DB Consumer Templates AtlTraceErrorRecords BEGIN_ACCESSOR BEGIN_ACCESSOR_MAP BEGIN_COLUMN_MAP BEGIN_PARAM_MAP BLOB_ENTRY BLOB_ENTRY_LENGTH BLOB_ENTRY_LENGTH_STATUS BLOB_ENTRY_STATUS BLOB_NAME BLOB_NAME_LENGTH BLOB_NAME_LENGTH_STATUS BLOB_NAME_STATUS BOOKMARK_ENTRY COLUMN_ENTRY COLUMN_ENTRY_EX COLUMN_ENTRY_LENGTH COLUMN_ENTRY_LENGTH_STATUS COLUMN_ENTRY_PS COLUMN_ENTRY_PS_LENGTH COLUMN_ENTRY_PS_LENGTH_STATUS COLUMN_ENTRY_PS_STATUS COLUMN_ENTRY_STATUS COLUMN_ENTRY_TYPE COLUMN_ENTRY_TYPE_SIZE COLUMN_NAME COLUMN_NAME_EX COLUMN_NAME_LENGTH COLUMN_NAME_LENGTH_STATUS COLUMN_NAME_PS COLUMN_NAME_PS_LENGTH COLUMN_NAME_PS_LENGTH_STATUS COLUMN_NAME_PS_STATUS COLUMN_NAME_STATUS COLUMN_NAME_TYPE COLUMN_NAME_TYPE_PS COLUMN_NAME_TYPE_SIZE COLUMN_NAME_TYPE_STATUS DEFINE_COMMAND DEFINE_COMMAND_EX END_ACCESSOR END_ACCESSOR_MAP END_COLUMN_MAP END_PARAM_MAP SET_PARAM_TYPE OLE DB Provider Templates Reference CRowsetImpl Class CRowsetImpl::GetColumnInfo CRowsetImpl::GetCommandFromID CRowsetImpl::m_rgRowData CRowsetImpl::m_strCommandText CRowsetImpl::m_strIndexText CRowsetImpl::NameFromDBID CRowsetImpl::SetCommandText CRowsetImpl::ValidateCommandID CSimpleRow Class CSimpleRow::AddRefRow CSimpleRow::Compare CSimpleRow::CSimpleRow CSimpleRow::m_dwRef CSimpleRow::m_iRowset CSimpleRow::ReleaseRow CUtlProps Class CUtlProps::GetPropValue CUtlProps::IsValidValue CUtlProps::OnInterfaceRequested CUtlProps::OnPropertyChanged CUtlProps::SetPropValue IAccessorImpl Class IAccessorImpl::AddRefAccessor IAccessorImpl::CreateAccessor IAccessorImpl::GetBindings IAccessorImpl::IAccessorImpl IAccessorImpl::ReleaseAccessor IColumnsInfoImpl Class IColumnsInfoImpl::GetColumnInfo IColumnsInfoImpl::MapColumnIDs ICommandImpl Class ICommandImpl::Cancel ICommandImpl::CancelExecution ICommandImpl::CreateRowset ICommandImpl::Execute ICommandImpl::GetDBSession ICommandImpl::ICommandImpl ICommandImpl::m_bCancel ICommandImpl::m_bCancelWhenExecuting ICommandImpl::m_bIsExecuting ICommandPropertiesImpl Class ICommandPropertiesImpl::GetProperties ICommandPropertiesImpl::SetProperties ICommandTextImpl Class ICommandTextImpl::GetCommandText ICommandTextImpl::m_strCommandText ICommandTextImpl::SetCommandText IConvertTypeImpl Class IConvertTypeImpl::CanConvert IDBCreateCommandImpl Class IDBCreateCommandImpl::CreateCommand IDBCreateSessionImpl Class IDBCreateSessionImpl::CreateSession IDBInitializeImpl Class IDBInitializeImpl::IDBInitializeImpl IDBInitializeImpl::Initialize IDBInitializeImpl::m_dwStatus IDBInitializeImpl::m_pCUtlPropInfo IDBInitializeImpl::Uninitialize IDBPropertiesImpl Class IDBPropertiesImpl::GetProperties IDBPropertiesImpl::GetPropertyInfo IDBPropertiesImpl::SetProperties IDBSchemaRowsetImpl Class IDBSchemaRowsetImpl::CheckRestrictions IDBSchemaRowsetImpl::CreateSchemaRowset IDBSchemaRowsetImpl::GetRowset IDBSchemaRowsetImpl::GetSchemas IDBSchemaRowsetImpl::SetRestrictions IErrorRecordsImpl Class IErrorRecordsImpl::AddErrorRecord IErrorRecordsImpl::GetBasicErrorInfo IErrorRecordsImpl::GetCustomErrorObject IErrorRecordsImpl::GetErrorDescriptionString IErrorRecordsImpl::GetErrorGUID IErrorRecordsImpl::GetErrorHelpContext IErrorRecordsImpl::GetErrorHelpFile IErrorRecordsImpl::GetErrorInfo IErrorRecordsImpl::GetErrorParameters IErrorRecordsImpl::GetRecordCount IErrorRecordsImpl::GetErrorSource IErrorRecordsImpl::m_rgErrors IGetDataSourceImpl Class IGetDataSourceImpl::GetDataSource IOpenRowsetImpl Class IOpenRowsetImpl::CreateRowset IOpenRowsetImpl::OpenRowset IRowsetChangeImpl Class IRowsetChangeImpl::DeleteRows IRowsetChangeImpl::FlushData IRowsetChangeImpl::InsertRow IRowsetChangeImpl::SetData IRowsetCreatorImpl Class IRowsetCreatorImpl::SetSite IRowsetIdentityImpl Class IRowsetIdentityImpl::IsSameRow IRowsetImpl Class IRowsetImpl::AddRefRows IRowsetImpl::CreateRow IRowsetImpl::GetData IRowsetImpl::GetDBStatus IRowsetImpl::GetNextRows IRowsetImpl::IRowsetImpl IRowsetImpl::m_bCanFetchBack IRowsetImpl::m_bCanScrollBack IRowsetImpl::m_bReset IRowsetImpl::m_iRowset IRowsetImpl::m_rgRowHandles IRowsetImpl::RefRows IRowsetImpl::ReleaseRows IRowsetImpl::RestartPosition IRowsetImpl::SetDBStatus IRowsetInfoImpl Class IRowsetInfoImpl::GetProperties IRowsetInfoImpl::GetReferencedRowset IRowsetInfoImpl::GetSpecification IRowsetLocateImpl Class IRowsetLocateImpl::Compare IRowsetLocateImpl::GetRowsAt IRowsetLocateImpl::GetRowsByBookmark IRowsetLocateImpl::Hash IRowsetLocateImpl::m_rgBookmarks IRowsetNotifyCP Class IRowsetNotifyCP::Fire_OnFieldChange IRowsetNotifyCP::Fire_OnRowChange IRowsetNotifyCP::Fire_OnRowsetChange IRowsetUpdateImpl Class IRowsetUpdateImpl::GetPendingRows IRowsetUpdateImpl::GetOriginalData IRowsetUpdateImpl::GetRowStatus IRowsetUpdateImpl::IsUpdateAllowed IRowsetUpdateImpl::m_mapCachedData IRowsetUpdateImpl::SetData IRowsetUpdateImpl::Undo IRowsetUpdateImpl::Update ISessionPropertiesImpl Class ISessionPropertiesImpl::GetProperties ISessionPropertiesImpl::SetProperties Macros for OLE DB Provider Templates BEGIN_PROPERTY_SET BEGIN_PROPERTY_SET_EX BEGIN_PROPSET_MAP BEGIN_PROVIDER_COLUMN_MAP BEGIN_SCHEMA_MAP CHAIN_PROPERTY_SET END_PROPERTY_SET END_PROPSET_MAP END_PROVIDER_COLUMN_MAP END_SCHEMA_MAP PROVIDER_COLUMN_ENTRY PROVIDER_COLUMN_ENTRY_GN PROVIDER_COLUMN_ENTRY_FIXED PROVIDER_COLUMN_ENTRY_LENGTH PROVIDER_COLUMN_ENTRY_STR PROVIDER_COLUMN_ENTRY_TYPE_LENGTH PROVIDER_COLUMN_ENTRY_WSTR PROPERTY_INFO_ENTRY PROPERTY_INFO_ENTRY_EX PROPERTY_INFO_ENTRY_VALUE SCHEMA_ENTRY