Freigeben über


Architektur von OLE DB-Anbietervorlagen

Aktualisiert: November 2007

Datenquellen und Sitzungen

Die OLE DB-Anbieterarchitektur umfasst ein Datenquellenobjekt und eine oder mehrere Sitzungen. Das Datenquellenobjekt ist das Ausgangsobjekt, das von jedem Anbieter instanziiert werden muss. Wenn eine Consumeranwendung Daten benötigt, erstellt sie das Datenquellenobjekt parallel, um den Anbieter zu starten. Das Datenquellenobjekt erstellt (mithilfe der IDBCreateSession-Schnittstelle) ein Sitzungsobjekt. Über dieses Objekt stellt der Consumer eine Verbindung mit dem Datenquellenobjekt her. ODBC-Programmierer können das Datenquellenobjekt als Äquivalent zu HENV und das Sitzungsobjekt als Äquivalent zu HDBC betrachten.

Durch die OLE DB-Vorlagen wird in Kombination mit den vom OLE DB-Anbieter-Assistenten erstellten Quelldateien ein Datenquellenobjekt implementiert. Eine Sitzung stellt ein Objekt dar und entspricht der TSession von OLE DB.

Erforderliche und optionale Schnittstellen

Die OLE DB-Anbietervorlagen enthalten bereits vorgefertigte Implementierungen für alle erforderlichen Schnittstellen. OLE DB bietet Definitionen erforderlicher und optionaler Schnittstellen für mehrere Objekttypen:

Beachten Sie, dass Row- und Speicherobjekte nicht von den OLE DB-Anbietervorlagen implementiert werden.

In der folgenden Tabelle sind die erforderlichen und optionalen Schnittstellen für die oben genannten Objekte gemäß der Dokumentation zum OLE DB 2.6 SDK aufgeführt.

Komponente

Schnittstelle

Bedeutung

Datenquelle (CDataSource)

[erforderlich] IDBCreateSession

[erforderlich] IDBInitialize

[erforderlich] IDBProperties

[erforderlich] IPersist

[optional] IConnectionPointContainer

[optional] IDBAsynchStatus

[optional] IDBDataSourceAdmin

[optional] IDBInfo

[optional] IPersistFile

[optional] ISupportErrorInfo

Verbindung vom Consumer zum Anbieter. Das Objekt wird zum Festlegen von Verbindungseigenschaften, z. B. Benutzer-ID, Kennwort und Datenquellenname, verwendet. Das Objekt kann auch zum Verwalten einer Datenquelle verwendet werden (Erstellungs-, Aktualisierungs-, Löschvorgänge, Tabellen usw.).

Sitzung (CSession)

[erforderlich] IGetDataSource

[erforderlich] IOpenRowset

[erforderlich] ISessionProperties

[optional] IAlterIndex

[optional] IAlterTable

[optional] IBindResource

[optional] ICreateRow

[optional] IDBCreateCommand

[optional] IDBSchemaRowset

[optional] IIndexDefinition

[optional] ISupportErrorInfo

[optional] ITableCreation

[optional] ITableDefinition

[optional] ITableDefinitionWithConstraints

[optional] ITransaction

[optional] ITransactionJoin

[optional] ITransactionLocal

[optional] ITransactionObject

Das Sitzungsobjekt stellt eine einfache Konversation zwischen einem Consumer und einem Anbieter dar. Sie ist insofern mit HSTMT in ODBC vergleichbar, als dass mehrere Sitzungen gleichzeitig aktiv sein können.

Das Sitzungsobjekt ist die primäre Verknüpfung für den Zugriff auf OLE DB-Funktionen. Der Abruf eines Befehls-, Transaktions- oder Rowsetobjekts erfolgt über das Sitzungsobjekt.

Rowset (CRowset)

[erforderlich] IAccessor

[erforderlich] IColumnsInfo

[erforderlich] IConvertType

[erforderlich] IRowset

[erforderlich] IRowsetInfo

[optional] IChapteredRowset

[optional] IColumnsInfo2

[optional] IColumnsRowset

[optional] IConnectionPointContainer

[optional] IDBAsynchStatus

[optional] IGetRow

[optional] IRowsetChange

[optional] IRowsetChapterMember

[optional] IRowsetCurrentIndex

[optional] IRowsetFind

[optional] IRowsetIdentity

[optional] IRowsetIndex

[optional] IRowsetLocate

[optional] IRowsetRefresh

[optional] IRowsetScroll

[optional] IRowsetUpdate

[optional] IRowsetView

[optional] ISupportErrorInfo

[optional] IRowsetBookmark

Das Rowsetobjekt steht für die Daten aus der Datenquelle. Das Objekt ist für die Bindungen dieser Daten sowie für alle grundlegenden Datenoperationen (Aktualisieren, Abrufen, Verschieben usw.) zuständig. Es ist stets ein Rowsetobjekt vorhanden, in dem Daten aufgenommen und bearbeitet werden.

Befehl (CCommand)

[erforderlich] IAccessor

[erforderlich] IColumnsInfo

[erforderlich] ICommand

[erforderlich] ICommandProperties

[erforderlich] ICommandText

[erforderlich] IConvertType

[optional] IColumnsRowset

[optional] ICommandPersist

[optional] ICommandPrepare

[optional] ICommandWithParameters

[optional] ISupportErrorInfo

[optional] ICommandStream

Das Befehlsobjekt verwaltet Datenoperationen, z. B. Abfragen. Es unterstützt sowohl parametrisierte als auch nicht parametrisierte Anweisungen.

Das Befehlsobjekt ist außerdem für die Verwaltung der Parameter- und Ausgabespaltenbindungen zuständig. Eine Bindung ist eine Struktur, die Informationen dazu enthält, wie eine Spalte in einem Rowset abgerufen werden sollte. Sie enthält Informationen wie Ordnungszahl, Datentyp, Länge und Status.

Transaktion (optional)

[erforderlich] IConnectionPointContainer

[erforderlich] ITransaction

[optional] ISupportErrorInfo

Das Transaktionsobjekt definiert eine atomare Arbeitseinheit für eine Datenquelle und bestimmt, in welcher Beziehung diese Arbeitseinheiten zueinander stehen. Dieses Objekt wird von den OLE DB-Anbietervorlagen nicht direkt unterstützt (d. h., Sie erstellen ein eigenes Objekt).

Weitere Informationen finden Sie unter den folgenden Themen:

Siehe auch

Konzepte

OLE DB-Anbietervorlagen (C++)

Referenz

OLE DB Interfaces