CCustomRowset (CustomRS.H)
O assistente gera uma entrada para o objeto de conjunto de linhas. Nesse caso, ele é chamado CCustomRowset
. A CCustomRowset
classe herda de uma classe de provedor OLE DB chamada CRowsetImpl
, que implementa todas as interfaces necessárias para o objeto de conjunto de linhas. O seguinte código mostra a nova lista de heranças para CRowsetImpl
:
template <class T, class Storage, class CreatorClass,
class ArrayType = CAtlArray<Storage>>
class CMyRowsetImpl:
public CRowsetImpl<T, Storage, CreatorClass, ArrayType,
CSimpleRow, IRowsetLocateImpl< T >>
CRowsetImpl
também usa as interfaces IAccessor
e IColumnsInfo
. Ele usa essas interfaces para campos de saída em tabelas. A classe também fornece uma implementação para IRowsetIdentity
que permite que o consumidor determine se duas linhas são iguais. A interface IRowsetInfo
implementa propriedades para o objeto de conjunto de linhas. A interface IConvertType
permite que o provedor resolva diferenças entre os tipos de dados solicitados pelo consumidor e aqueles usados pelo provedor.
A interface IRowset
lida de fato com a recuperação de dados. O consumidor primeiro chama um método denominado GetNextRows
para retornar um identificador para uma linha conhecida como HROW
. Em seguida, o consumidor chama IRowset::GetData
com essa HROW
para recuperar os dados solicitados.
CRowsetImpl
também usa vários parâmetros de modelo. Esses parâmetros permitem determinar como a classe CRowsetImpl
lida com os dados. O argumento ArrayType
permite que você determine qual mecanismo de armazenamento é usado para armazenar os dados de linha. O parâmetro RowClass especifica qual classe contém um HROW
.
O parâmetro RowsetInterface permite que você também use a interface IRowsetLocate
ou IRowsetScroll
. As interfaces IRowsetLocate
e IRowsetScroll
herdam de IRowset
. Portanto, os modelos de provedor OLE DB devem fornecer tratamento especial para essas interfaces. Se você quiser usar qualquer uma dessas interfaces, precisará usar esse parâmetro.