Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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;