Classe CRowsetImpl

Fornece uma implementação de conjunto de linhas OLE DB padrão sem exigir várias heranças de muitas interfaces de implementação.

Sintaxe

template <
   class T,
   class Storage,
   class CreatorClass,
   class ArrayType = CAtlArray<Storage>,
   class RowClass = CSimpleRow,
   class RowsetInterface = IRowsetImpl <T, IRowset>
>
class CRowsetImpl :
   public CComObjectRootEx<CreatorClass::_ThreadModel>,
   public CRowsetBaseImpl<T, Storage, ArrayType, RowsetInterface>,
   public IRowsetInfoImpl<T, CreatorClass::_PropClass>

Parâmetros

T
A classe do usuário que deriva de CRowsetImpl.

Storage
A classe de registro do usuário.

CreatorClass
A classe que contém propriedades para o conjunto de linhas; normalmente, o comando.

ArrayType
A classe que atuará como armazenamento para os dados do conjunto de linhas. Esse parâmetro usa CAtlArray como padrão, mas pode ser qualquer classe que dê suporte à funcionalidade necessária.

Requisitos

Cabeçalho: atldb.h

Membros

Métodos

Nome Descrição
NameFromDBID Extrai uma cadeia de caracteres de um DBID e a copia para o bstr passado.
SetCommandText Valida e armazena os DBIDs nas duas cadeias de caracteres (m_strCommandText e m_strIndexText).

Métodos substituíveis

Nome Descrição
GetColumnInfo Recupera informações de coluna para uma solicitação de cliente específica.
GetCommandFromID Verifica se ambos os parâmetros contêm valores de cadeia de caracteres e, nesse caso, copia os valores de cadeia de caracteres para os membros de dados m_strCommandText e m_strIndexText.
ValidateCommandID Verifica se um ou ambos os DBIDs contêm valores de cadeia de caracteres e, em caso afirmativo, os copia para os membros de dados m_strCommandText e m_strIndexText.

Membros de dados

Nome Descrição
m_rgRowData Por padrão, um CAtlArray que templatiza no argumento de modelo de registro do usuário para CRowsetImpl. Outra classe de tipo de matriz pode ser usada ao alterar o argumento de modelo ArrayType para CRowsetImpl.
m_strCommandText Contém o comando inicial do conjunto de linhas.
m_strIndexText Contém o índice inicial do conjunto de linhas.

Comentários

CRowsetImpl fornece substituições na forma de upcasts estáticos. Os métodos controlam a maneira como um determinado conjunto de linhas validará o texto de comando. Você pode criar sua própria classe de estilo de CRowsetImpl ao tornar suas interfaces de implementação de herança múltipla. O único método para o qual você deve fornecer implementação é Execute. Dependendo do tipo de conjunto de linhas que você está criando, os métodos do criador esperam assinaturas diferentes para Execute. Por exemplo, se você estiver usando uma classe derivada de CRowsetImpl para implementar um conjunto de linhas de esquema, o método Execute terá a seguinte assinatura:

HRESULT Execute(LONG* pcRows, ULONG cRestrictions, const VARIANT* rgRestrictions)

Se você estiver criando uma classe derivada de CRowsetImpl para implementar um conjunto de linhas de um comando ou sessão, o método Execute terá a seguinte assinatura:

HRESULT Execute(LONG* pcRows, DBPARAMS* pParams)

Para implementar qualquer um dos métodos Execute derivados de CRowsetImpl, você deve preencher seus buffers de dados internos (m_rgRowData).

CRowsetImpl::NameFromDBID

Extrai uma cadeia de caracteres de um DBID e a copia para o bstr passado.

Sintaxe

HRESULT CRowsetBaseImpl::NameFromDBID(DBID* pDBID,
   CComBSTR& bstr,
   bool bIndex);

Parâmetros

pDBID
[in] Um ponteiro para o DBID do qual extrair uma cadeia de caracteres.

bstr
[in] Uma referência CComBSTR para colocar uma cópia da cadeia de caracteres DBID.

bIndex
[in] true se um índice DBID; false se uma tabela DBID.

Valor de retorno

Um valor HRESULT padrão. Dependendo se DBID é uma tabela ou um índice (indicado por bIndex), o método retornará DB_E_NOINDEX ou DB_E_NOTABLE.

Comentários

Esse método é chamado pelas implementações CRowsetImpl de ValidateCommandID e GetCommandFromID.

CRowsetImpl::SetCommandText

Valida e armazena os DBIDs nas duas cadeias de caracteres (m_strCommandText e m_strIndexText).

Sintaxe

HRESULT CRowsetBaseImpl::SetCommandText(DBID* pTableID,
   DBID* pIndexID);

Parâmetros

pTableID
[in] Um ponteiro para DBID representando a ID da tabela.

pIndexID
[in] Um ponteiro para DBID representando a ID do índice.

Valor de retorno

Um valor HRESULT padrão.

Comentários

O método SetCommentText é chamado por CreateRowset, um método templatizado estático de IOpenRowsetImpl.

Esse método delega seu trabalho chamando ValidateCommandID e GetCommandFromID por meio de um ponteiro upcasted.

CRowsetImpl::GetColumnInfo

Recupera informações de coluna para uma solicitação de cliente específica.

Sintaxe

static ATLCOLUMNINFO* CRowsetBaseImpl::GetColumnInfo(T* pv,
   ULONG* pcCols);

Parâmetros

pv
[in] Um ponteiro para a classe derivada CRowsetImpl do usuário.

pcCols
[in] Um ponteiro (saída) para o número de colunas retornadas.

Valor de retorno

Um ponteiro para uma estrutura ATLCOLUMNINFO estática.

Comentários

Esse método é uma substituição avançada.

Esse método é chamado por várias classes de implementação base para recuperar informações de coluna para uma solicitação de cliente específica. Normalmente, esse método seria chamado por IColumnsInfoImpl. Se você substituir esse método, deverá colocar uma versão do método em sua classe derivada de CRowsetImpl. Como o método pode ser colocado em uma classe não templatizada, você deve alterar o pv para a classe derivada de CRowsetImpl adequada.

O exemplo a seguir demonstra o uso de GetColumnInfo. Neste exemplo, CMyRowset é uma classe derivada de CRowsetImpl. Para substituir GetColumnInfo para todas as instâncias dessa classe, coloque o seguinte método na definição de classe CMyRowset:

static ATLCOLUMNINFO* GetColumnInfo(CCustomRowset* pRowset, DBORDINAL* pcCols)
{
   // Add your implementation here and/or call the base class

   return CRowsetImpl::GetColumnInfo(pRowset, pcCols);
}

CRowsetImpl::GetCommandFromID

Verifica se ambos os parâmetros contêm valores de cadeia de caracteres e, nesse caso, copia os valores de cadeia de caracteres para os membros de dados m_strCommandText e m_strIndexText.

Sintaxe

HRESULT CRowsetBaseImpl::GetCommandFromID(DBID* pTableID,
   DBID* pIndexID);

Parâmetros

pTableID
[in] Um ponteiro para DBID representando a ID da tabela.

pIndexID
[in] Um ponteiro para DBID representando a ID do índice.

Valor de retorno

Um valor HRESULT padrão.

Comentários

Esse método é chamado através de um upcast estático por CRowsetImpl para popular os membros de dados m_strCommandText e m_strIndexText. Por padrão, esse método verifica se ambos ou ambos os parâmetros contêm valores de cadeia de caracteres. Se eles contiverem valores de cadeia de caracteres, esse método copiará os valores de cadeia de caracteres para os membros de dados. Ao colocar um método com essa assinatura na classe derivada de CRowsetImpl, seu método será chamado em vez da implementação base.

CRowsetImpl::ValidateCommandID

Verifica se um ou ambos os DBIDs contêm valores de cadeia de caracteres e, em caso afirmativo, os copia para os membros de dados m_strCommandText e m_strIndexText.

Sintaxe

HRESULT CRowsetBaseImpl::ValidateCommandID(DBID* pTableID,
   DBID* pIndexID);

Parâmetros

pTableID
[in] Um ponteiro para DBID representando a ID da tabela.

pIndexID
[in] Um ponteiro para DBID representando a ID do índice.

Valor de retorno

Um valor HRESULT padrão.

Comentários

Esse método é chamado através de um upcast estático por CRowsetImpl para popular seus membros de dados m_strCommandText e m_strIndexText. Por padrão, esse método verifica se um ou ambos os DBIDs contêm valores de cadeia de caracteres e, em caso afirmativo, os copia para os respectivos membros de dados. Ao colocar um método com essa assinatura na classe derivada de CRowsetImpl, seu método será chamado em vez da implementação base.

CRowsetImpl::m_rgRowData

Por padrão, um CAtlArray que templatiza no argumento de modelo de registro do usuário para CRowsetImpl.

Sintaxe

ArrayType CRowsetBaseImpl::m_rgRowData;

Comentários

ArrayType é um parâmetro de modelo para CRowsetImpl.

CRowsetImpl::m_strCommandText

Contém o comando inicial do conjunto de linhas.

Sintaxe

CComBSTR CRowsetBaseImpl::m_strCommandText;

CRowsetImpl::m_strIndexText

Contém o índice inicial do conjunto de linhas.

Sintaxe

CComBSTR CRowsetBaseImpl::m_strIndexText;