Freigeben über


Abrufen von Daten mittels AdomdDataReader

Beim Abruf von analytischen Daten stellt das AdomdDataReader-Objekt ein ausgewogenes Gleichgewicht zwischen Verwaltung und Interaktivität bereit. Das AdomdDataReader-Objekt ruft einen schreibgeschützten, vereinfachten Vorwärtsdatenstrom von einer analytischen Datenquelle ab. Dieser nicht zwischengespeicherte Datenstrom ermöglicht es der prozeduralen Logik, die Ergebnisse von einer analytischen Datenquelle effektiv sequenziell zu verarbeiten. Daher ist AdomdDataReader eine gute Wahl für das Abrufen großer Datenmengen zu Anzeigezwecken, da die Daten nicht zwischengespeichert werden.

AdomdDataReader kann darüber hinaus die Anwendungsleistung erhöhen, indem Daten abgerufen werden, sobald diese zur Verfügung stehen, anstatt darauf zu warten, dass die vollständigen Ergebnisse der Abfrage zurückgegeben werden. AdomdDataReader reduziert des Weiteren den Systemverwaltungsaufwand, da dieser Leser standardmäßig nur jeweils eine Zeile speichert.

Der Nachteil der optimierten Leistung ist, dass das AdomdDataReader-Objekt weniger Informationen über die abgerufenen Daten bereitstellt als andere Datenabrufmethoden. Das AdomdDataReader-Objekt unterstützt kein großes Objektmodell für die Darstellung von Daten oder Metadaten. Darüber hinaus ermöglicht dieses Objektmodell keine komplexeren Analysefunktionen, wie beispielsweise Zellenrückschreiben. Allerdings bietet das AdomdDataReader-Objekt eine Gruppe von Methoden mit starker Typisierung für das Abrufen von Cellset-Daten und eine Methode für das Abrufen von Cellset-Metadaten im Tabellenformat. Zusätzlich implementiert AdomdDataReader die IDbDataReader-Schnittstelle für die Unterstützung von Datenbindung und das Abrufen von Daten mittels SelectCommand-Methode aus dem System.Data-Namespace der Microsoft .NET Framework-Klassenbibliothek.

Abrufen von Daten aus AdomdDataReader

Um das AdomdDataReader-Objekt für das Abrufen von Daten zu verwenden, führen Sie die folgenden Schritte durch:

  1. Erstellen Sie eine neue Instanz des Objekts.

    Um eine neue Instanz der AdomdDataReader-Klasse zu erstellen, rufen Sie die Execute- oder ExecuteReader-Methode des AdomdCommand-Objekts auf.

  2. Rufen Sie Daten ab.

    Während der Befehl die Abfrage ausführt, gibt ADOMD.NET die Ergebnisse im Resultset-Format zurück. Dies ist ein Tabellenformat, wie es in der XML for Analysis-Spezifikation angegeben wird, das die Daten des AdomdDataReader-Objekts vereinfacht. In Anbetracht der variablen Dimensionalität derartiger Daten ist das Tabellenformat bei der Abfrage analytischer Daten ungewöhnlich.

    ADOMD.NET speichert diese Tabellenergebnisse im Netzwerkpuffer auf dem Client, bis Sie diese über eine der folgenden Methoden anfordern:

    • Rufen Sie die Read-Methode des AdomdDataReader-Objekts auf.

      Die Read-Methode ruft eine Zeile aus den Abfrageergebnissen ab. Sie können dann den Namen oder den Ordnungszahlverweis der Spalte an die Item-Eigenschaft übergeben, um auf jede Spalte der zurückgegebenen Zeile zuzugreifen. Der Name der ersten Spalte in der aktuellen Zeile ist beispielsweise ColumnName. Dann geben entweder reader[0].ToString() oder reader["ColumnName"].ToString() die Inhalte der ersten Spalte in der aktuellen Zeile zurück.

    • Rufen Sie eine der typisierten Accessormethoden auf.

      AdomdDataReader stellt eine Reihe an typisierten Accessormethoden bereit – Methoden, über die Sie auf Spaltenwerte in deren systemeigenen Datentypen zugreifen können. Wenn Sie den zugrunde liegenden Datentyp eines Spaltenwerts kennen, verringert eine typisierte Accessormethode den erforderlichen Aufwand für die Typkonvertierung beim Abruf des Spaltenwerts und bietet damit die höchste Leistung.

      Zu den verfügbaren typisierten Accessormethoden gehören GetDateTime, GetDouble und GetInt32. Eine vollständige Liste der typisierten Accessormethoden finden Sie unter AdomdDataReader.

  3. Schließen Sie den Leser.

    Sie sollten immer die Close-Methode aufrufen, wenn Sie die Verwendung des AdomdDataReader-Objekts abgeschlossen haben. Während eine Instanz eines AdomdDataReader-Objekts geöffnet ist, wird AdomdConnection ausschließlich von diesem AdomdDataReader verwendet. Sie sind in diesem Fall nicht in der Lage, Befehle auf einer Instanz von AdomdConnection auszuführen, einschließlich der Erstellung eines weiteren AdomdDataReader oder System.Xml.XmlReader, bis Sie den ursprünglichen AdomdDataReader schließen.

Beispiel für das Abrufen von Daten aus AdomdDataReader

Das folgende Codebeispiel führt eine Iteration durch ein AdomdDataReader-Objekt durch und gibt die ersten beiden Werte aus jeder Zeile als Zeichenfolgen zurück.

If Reader.HasRows Then
    Do While objReader.Read()
        Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", _
            objReader.GetString(0), objReader.GetString(1))
    Loop
Else
  Console.WriteLine("No rows returned.")
End If

objReader.Close()
if (objReader.HasRows)
  while (objReader.Read())
    Console.WriteLine("\t{0}\t{1}", _
        objReader.GetString(0), objReader.GetString(1));
else
  Console.WriteLine("No rows returned.");

objReader.Close();

Abrufen von Metadaten aus AdomdDataReader

Während eine Instanz eines AdomdDataReader-Objekts geöffnet ist, können Sie Schemainformationen oder Metadaten über das aktuelle Recordset mithilfe der GetSchemaTable-Methode abrufen. GetSchemaTable gibt ein DataTable-Objekt zurück, das mit den Schemainformationen für den aktuellen Recordset gefüllt ist. Die DataTable enthält eine Zeile für jede Spalte des Recordsets. Jede Spalte der Schematabellenzeile ist einer Eigenschaft der im Cellset zurückgegebenen Spalte zugeordnet, wobei ColumnName der Name der Eigenschaft und der Wert der Spalte der Wert der Eigenschaft ist.

Beispiel für das Abrufen von Metadaten aus AdomdDataReader

Im folgenden Codebeispiel werden die Schemainformationen für ein AdomdDataReader-Objekt ausgeschrieben.

Dim schemaTable As DataTable = objReader.GetSchemaTable()

Dim objRow As DataRow
Dim objColumn As DataColumn

For Each objRow In schemaTable.Rows
  For Each objColumn In schemaTable.Columns
    Console.WriteLine(objColumn.ColumnName & " = " & objRow(objColumn).ToString())
  Next
  Console.WriteLine()
Next
DataTable schemaTable = objReader.GetSchemaTable();
foreach (DataRow objRow in schemaTable.Rows)
{
  foreach (DataColumn objColumn in schemaTable.Columns)
    Console.WriteLine(objColumn.ColumnName + " = " + objRow[objColumn]);
  Console.WriteLine();
}

Abrufen mehrerer Resultsets

Data Mining unterstützt das Konzept der geschachtelten Tabellen, welche ADOMD.NET als geschachtelte Rowsets verfügbar macht. Um das jeder Zeile zugehörige Rowset abzurufen, rufen Sie die GetDataReader-Methode auf.

Siehe auch

Verweis

Abrufen von Daten von einer analytischen Datenquelle

Abrufen von Daten mittels Cellset

Abrufen von Daten mittels XmlReader