Architettura dei modelli di provider OLE DB

Origini dati e sessioni

L'architettura dei provider OLE DB include un oggetto DataSource (origine dati) e uno o più oggetti Session per le sessioni. L'oggetto DataSource è l'oggetto iniziale di cui ciascun provider deve creare un'istanza. Quando un'applicazione consumer necessita di dati, viene creato l'oggetto DataSource per avviare il provider. L'oggetto DataSource a sua volta crea un oggetto Session mediante l'interfaccia IDBCreateSession affinché il consumer possa eseguire la connessione all'oggetto DataSource. Per i programmatori ODBC l'oggetto DataSource può essere considerato come l'equivalente di HENV, mentre l'oggetto Session corrisponde a HDBC.

Rappresentazione grafica dell'architettura del provider

Con i file di origine generati dalla Creazione guidata provider OLE DB ATL i modelli OLE DB implementano un oggetto DataSource. Una sessione è un oggetto che corrisponde a TSession OLE DB.

Interfacce facoltative e obbligatorie

I modelli provider OLE DB offrono implementazioni precostituite di tutte le interfacce obbligatorie. Le interfacce facoltative e obbligatorie vengono definite da OLE DB per diversi tipi di oggetti:

Come si può notare, i modelli provider OLE DB non implementano gli oggetti Row e Storage.

Nella tabella riportata di seguito sono elencate le interfacce facoltative e obbligatorie per gli oggetti sopra indicati, in base alla documentazione SDK su OLE DB 2.6:

Componente

Interfaccia

Commento

DataSource (CDataSource)

[obbligatoria] IDBCreateSession

[obbligatoria] IDBInitialize

[obbligatoria] IDBProperties

[obbligatoria] IPersist

[facoltativa] IConnectionPointContainer

[facoltativa] IDBAsynchStatus

[facoltativa] IDBDataSourceAdmin

[facoltativa] IDBInfo

[facoltativa] IPersistFile

[facoltativa] ISupportErrorInfo

Connessione dal consumer al provider. L'oggetto viene utilizzato per specificare le proprietà relative alla connessione, quali ID utente, password e DSN. È inoltre possibile utilizzare l'oggetto per amministrare un'origine dati (creazione, aggiornamento, eliminazione, tabelle e così via).

Session (CSession)

[obbligatoria] IGetDataSource

[obbligatoria] IOpenRowset

[obbligatoria] ISessionProperties

[facoltativa] IAlterIndex

[facoltativa] IAlterTable

[facoltativa] IBindResource

[facoltativa] ICreateRow

[facoltativa] IDBCreateCommand

[facoltativa] IDBSchemaRowset

[facoltativa] IIndexDefinition

[facoltativa] ISupportErrorInfo

[facoltativa] ITableCreation

[facoltativa] ITableDefinition

[facoltativa] ITableDefinitionWithConstraints

[facoltativa] ITransaction

[facoltativa] ITransactionJoin

[facoltativa] ITransactionLocal

[facoltativa] ITransactionObject

L'oggetto Session rappresenta una singola conversazione tra un consumer e un provider. Per vari aspetti è simile a HSTMT ODBC, in quanto possono essere presenti più sessioni contemporaneamente.

L'oggetto Session è il principale collegamento per la funzionalità OLE DB. Per accedere a un oggetto Command, Transaction o Rowset, è necessario passare dall'oggetto Session.

Rowset (CRowset)

[obbligatoria] IAccessor

[obbligatoria] IColumnsInfo

[obbligatoria] IConvertType

[obbligatoria] IRowset

[obbligatoria] IRowsetInfo

[facoltativa] IChapteredRowset

[facoltativa] IColumnsInfo2

[facoltativa] IColumnsRowset

[facoltativa] IConnectionPointContainer

[facoltativa] IDBAsynchStatus

[facoltativa] IGetRow

[facoltativa] IRowsetChange

[facoltativa] IRowsetChapterMember

[facoltativa] IRowsetCurrentIndex

[facoltativa] IRowsetFind

[facoltativa] IRowsetIdentity

[facoltativa] IRowsetIndex

[facoltativa] IRowsetLocate

[facoltativa] IRowsetRefresh

[facoltativa] IRowsetScroll

[facoltativa] IRowsetUpdate

[facoltativa] IRowsetView

[facoltativa] ISupportErrorInfo

[facoltativa] IRowsetBookmark

L'oggetto Rowset rappresenta i dati provenienti dall'origine dati. L'oggetto effettua le associazioni di tali dati, nonché di qualsiasi operazione base (aggiornamento, recupero, spostamento e altre) eseguita sui dati. È sempre necessario disporre di un oggetto Rowset per contenere e modificare i dati.

Command (CCommand)

[obbligatoria] IAccessor

[obbligatoria] IColumnsInfo

[obbligatoria] ICommand

[obbligatoria] ICommandProperties

[obbligatoria] ICommandText

[obbligatoria] IConvertType

[facoltativa] IColumnsRowset

[facoltativa] ICommandPersist

[facoltativa] ICommandPrepare

[facoltativa] ICommandWithParameters

[facoltativa] ISupportErrorInfo

[facoltativa] ICommandStream

L'oggetto Command gestisce le operazioni sui dati, quali ad esempio le query. È in grado di gestire istruzioni con o senza parametri.

È inoltre utilizzato per la gestione delle associazioni per parametri e colonne di output. Un'associazione è una struttura che contiene informazioni sulle modalità di recupero di una colonna in un rowset, quali la posizione ordinale, il tipo di dati, la lunghezza e lo stato.

Transaction (facoltativo)

[obbligatoria] IConnectionPointContainer

[obbligatoria] ITransaction

[facoltativa] ISupportErrorInfo

L'oggetto Transaction definisce un'unità atomica di lavoro su un'origine dati e determina le relazioni tra le unità di lavoro. Questo oggetto non è supportato direttamente dai modelli provider OLE DB, ma deve essere creato manualmente.

Per ulteriori informazioni, vedere i seguenti argomenti:

Vedere anche

Riferimenti

OLE DB Interfaces

Concetti

Modelli provider OLE DB (C++)