CCustomSession (CustomSess.H)
CustomSess.H contém a declaração e a implementação do objeto de sessão do OLE DB. O objeto de fonte de dados cria o objeto de sessão e representa uma conversa entre um consumidor e um provedor. Várias sessões simultâneas podem ser abertas para uma fonte de dados. Segue a lista de heranças para CCustomSession
:
/////////////////////////////////////////////////////////////////////////
// CCustomSession
class ATL_NO_VTABLE CCustomSession :
public CComObjectRootEx<CComSingleThreadModel>,
public IGetDataSourceImpl<CCustomSession>,
public IOpenRowsetImpl<CCustomSession>,
public ISessionPropertiesImpl<CCustomSession>,
public IObjectWithSiteSessionImpl<CCustomSession>,
public IDBSchemaRowsetImpl<CCustomSession>,
public IDBCreateCommandImpl<CCustomSession, CCustomCommand>
O objeto de sessão herda de IGetDataSource
, IOpenRowset
, ISessionProperties
e IDBCreateCommand
. A interface IGetDataSource
permite que uma sessão recupere a fonte de dados que a criou. Isso será útil se você precisar obter propriedades da fonte de dados que você criou ou outras informações que a fonte de dados pode fornecer. A interface ISessionProperties
manipula todas as propriedades da sessão. As interfaces IOpenRowset
e IDBCreateCommand
são usadas para fazer o trabalho do banco de dados. Se o provedor der suporte a comandos, ele implementará a interface IDBCreateCommand
. Ele é usado para criar o objeto de comando que pode executar comandos. O provedor sempre implementa o objeto IOpenRowset
. Ele é usado para gerar um conjunto de linhas a partir de um provedor. É um conjunto de linhas padrão (por exemplo, "select * from mytable"
) de um provedor.
O assistente também gera três classes de sessão: CCustomSessionColSchema
, CCustomSessionPTSchema
e CCustomSessionTRSchema
. Essas sessões são usadas para conjuntos de linhas de esquema. Os conjuntos de linhas de esquema permitem que o provedor retorne metadados ao consumidor sem que o consumidor precise executar uma consulta ou buscar dados. Buscar metadados pode ser muito mais rápido do que encontrar os recursos de um provedor.
A especificação OLE DB exige que os provedores que implementam a interface IDBSchemaRowset
ofereçam suporte a três tipos de conjunto de linhas de esquema: DBSCHEMA_COLUMNS, DBSCHEMA_PROVIDER_TYPES e DBSCHEMA_TABLES. O assistente gera implementações para cada conjunto de linhas de esquema. Cada classe gerada pelo assistente contém um método Execute
. Nesse método Execute
, você pode retornar dados ao provedor sobre as tabelas, colunas e tipos de dados aos quais você dá suporte. Esses dados são conhecidos no momento da compilação.