Classe CXMLAccessor

Consente di accedere alle origini dati come dati stringa quando non si ha alcuna conoscenza dello schema dell'archivio dati (struttura sottostante).

Sintassi

class CXMLAccessor : public CDynamicStringAccessorW

Requisiti

Intestazione: atldbcli.h

Membri

Metodi

Nome Descrizione
GetXMLColumnData Recupera le informazioni sulla colonna.
GetXMLRowData Recupera l'intero contenuto di una tabella in base alle righe.

Osservazioni:

Tuttavia, CXMLAccessor differisce dal CDynamicStringAccessorW fatto che converte tutti i dati a cui si accede dall'archivio dati come dati in formato XML (con tag). Ciò è particolarmente utile per l'output in pagine Web con riconoscimento XML. I nomi dei tag XML corrispondono ai nomi delle colonne dell'archivio dati il più possibile.

Utilizzare CDynamicAccessor i metodi per ottenere informazioni sulla colonna. Queste informazioni sulla colonna vengono usate per creare una funzione di accesso in modo dinamico in fase di esecuzione.

Le informazioni sulla colonna vengono archiviate in un buffer creato e gestito da questa classe. Ottenere informazioni sulla colonna usando GetXMLColumnData o ottenere i dati delle colonne tramite GetXMLRowData.

Esempio

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 le informazioni sul tipo di colonna di una tabella come dati stringa in formato XML, in base alla colonna.

Sintassi

HRESULT GetXMLColumnData(CSimpleStringW& strOutput) throw();

Parametri

strOutput
[out] Riferimento a un buffer stringa contenente le informazioni sul tipo di colonna da recuperare. La stringa viene formattata con nomi di tag XML corrispondenti ai nomi delle colonne dell'archivio dati.

Valore restituito

Uno dei valori HRESULT standard.

Osservazioni:

Di seguito viene illustrato come le informazioni sul tipo di colonna vengono formattate in XML. type specifica il tipo di dati della colonna. Si noti che i tipi di dati sono basati sui tipi di dati OLE DB, non quelli del database a cui si accede.

<columninfo>

<column type = I2/> ColumnName

</columninfo>

CXMLAccessor::GetXMLRowData

Recupera l'intero contenuto di una tabella come dati stringa in formato XML, in base alla riga.

Sintassi

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

Parametri

strOutput
[out] Riferimento a un buffer contenente i dati della tabella da recuperare. I dati vengono formattati come dati stringa con nomi di tag XML che corrispondono ai nomi delle colonne dell'archivio dati.

bAppend
[in] Valore booleano che specifica se aggiungere una stringa alla fine dei dati di output.

Valore restituito

Uno dei valori HRESULT standard.

Osservazioni:

Di seguito viene illustrato come i dati di riga vengono formattati in XML. DATA di seguito rappresenta i dati di riga. Utilizzare i metodi di spostamento per passare alla riga desiderata.

<row>

<column name>DATA</column name>

</row>

Vedi anche

Modelli di consumer OLE DB
Riferimenti ai modelli consumer OLE DB
Classe CAccessor
Classe CDynamicAccessor
Classe CDynamicParameterAccessor
Classe CDynamicStringAccessor
Classe CDynamicStringAccessorA
Classe CDynamicStringAccessorW
Classe CManualAccessor