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 DBID s 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 DBID s 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 DBID
s 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 DBID
s 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 DBID
s 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;