Compartilhar via


Classe CXMLAccessor

Permite que você acesse fontes de dados como dados de cadeia de caracteres quando não tiver conhecimento do esquema do armazenamento de dados (estrutura subjacente).

Sintaxe

class CXMLAccessor : public CDynamicStringAccessorW

Requisitos

Cabeçalho: atldbcli.h

Membros

Métodos

Nome Descrição
GetXMLColumnData Recupera as informações da coluna.
GetXMLRowData Recupera todo o conteúdo de uma tabela por linhas.

Comentários

No entanto, CXMLAccessor é diferente de CDynamicStringAccessorW no sentido de que converte todos os dados acessados a partir do armazenamento de dados como dados formatados em XML (marcados). Isso é especialmente útil para a saída para páginas da Web com reconhecimento XML. Os nomes das marcas XML correspondem o máximo possível aos nomes de coluna do armazenamento de dados.

Use métodos CDynamicAccessor para obter informações de coluna. Use essas informações de coluna para criar um acessador dinamicamente em tempo de execução.

As informações da coluna são armazenadas em um buffer criado e gerenciado por essa classe. Obtenha informações de coluna usando GetXMLColumnData, ou obtenha dados de coluna por linhas usando GetXMLRowData.

Exemplo

void DoCXMLAccessorTest()
{
   HRESULT hr = CoInitialize(NULL);

   CDataSource ds;
   CSession ss;

   CTable<CXMLAccessor> rs;

   // The following is an example initialization string:
   hr = ds.OpenFromInitializationString(L"Provider=Microsoft.Jet.OLEDB.4.0;"
      L"User ID=Admin;Data Source=Snippet.mdb;Mode=Share Deny None;"
      L"Extended Properties=\"\";Jet OLEDB:System database=\"\";"
      L"Jet OLEDB:Registry Path=\"\";Jet OLEDB:Database Password=\"\";"
      L"Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;"
      L"Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;"
      L"Jet OLEDB:New Database Password=\"\";Jet OLEDB:Create System Database=False;"
      L"Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;"
      L"Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False");

   hr = ss.Open(ds);
   hr = rs.Open(ss, L"Customer"); // Customer is a table name in the database.

   CStringW strColumnInfo;
   rs.GetXMLColumnData(strColumnInfo);
   wprintf_s(L"%s\n", strColumnInfo);

   hr = rs.MoveFirst();
   while(SUCCEEDED(hr) && hr != DB_S_ENDOFROWSET)
   {
      CStringW strRowData;
      rs.GetXMLRowData(strRowData);
      wprintf_s(L"%s\n", strRowData);
      hr = rs.MoveNext();
   }

   ss.Close();
   ds.Close();
   CoUninitialize();
}

CXMLAccessor::GetXMLColumnData

Recupera as informações de tipo de coluna de uma tabela como dados de cadeia de caracteres formatados em XML, por coluna.

Sintaxe

HRESULT GetXMLColumnData(CSimpleStringW& strOutput) throw();

Parâmetros

strOutput
[out] Uma referência a um buffer de cadeia de caracteres que contém as informações de tipo de coluna a serem recuperadas. A cadeia de caracteres é formatada com nomes de marca XML que correspondem aos nomes de coluna do repositório de dados.

Valor de retorno

Um dos valores HRESULT padrão.

Comentários

O exemplo a seguir mostra como as informações de tipo de coluna são formatadas em XML. type especifica o tipo de dados da coluna. Observe que os tipos de dados são baseados em tipos de dados OLE DB, e não naqueles do banco de dados que está sendo acessado.

<columninfo>

<column type = I2/> ColumnName

</columninfo>

CXMLAccessor::GetXMLRowData

Recupera todo o conteúdo de uma tabela como dados de cadeia de caracteres formatados em XML, por linha.

Sintaxe

HRESULT GetXMLRowData(CSimpleStringW& strOutput,
   bool bAppend = false) throw();

Parâmetros

strOutput
[out] Uma referência a um buffer que contém os dados da tabela a serem recuperados. Os dados são formatados como cadeia de caracteres com nomes de marca XML que correspondem aos nomes de coluna do armazenamento de dados.

bAppend
[in] Um valor booliano que especifica se se deve acrescentar uma cadeia de caracteres ao final dos dados de saída.

Valor de retorno

Um dos valores HRESULT padrão.

Comentários

O exemplo a seguir mostra como os dados da linha são formatados em XML. DATA abaixo representa os dados da linha. Use métodos de movimentação para mover para a linha desejada.

<row>

<column name>DATA</column name>

</row>

Confira também

Modelos de consumidor OLE DB
Referência de modelos de consumidor do OLE DB
Classe CAccessor
Classe CDynamicAccessor
Classe CDynamicParameterAccessor
Classe CDynamicStringAccessor
Classe CDynamicStringAccessorA
Classe CDynamicStringAccessorW
Classe CManualAccessor