Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
När du hämtar analysdata AdomdDataReader ger objektet en bra balans mellan overhead och interaktivitet. Objektet AdomdDataReader hämtar en skrivskyddad, framåtriktad, utplattad dataström från en analytisk datakälla. Den här obuffertade dataströmmen gör det möjligt för procedurlogik att effektivt bearbeta resultat från en analytisk datakälla sekventiellt. Detta gör det AdomdDataReader ett bra val när du hämtar stora mängder data i visningssyfte eftersom data inte cachelagras i minnet.
AdomdDataReader Kan också öka programmets prestanda genom att hämta data så snart de är tillgängliga, i stället för att vänta på att det fullständiga resultatet av frågan ska returneras. Minskar AdomdDataReader också systemkostnaderna eftersom läsaren som standard bara lagrar en rad i taget i minnet.
Kompromissen för optimerad prestanda är att AdomdDataReader objektet ger mindre information om hämtade data än andra metoder för datahämtning. Objektet AdomdDataReader stöder inte en stor objektmodell för att representera data eller metadata, och inte heller tillåter den här objektmodellen mer komplexa analysfunktioner som tillbakaskrivning av celler. Objektet tillhandahåller dock AdomdDataReader en uppsättning starkt skrivna metoder för att hämta celluppsättningsdata och en metod för att hämta metadata för celluppsättningar i tabellformat. AdomdDataReader Dessutom implementerar IDbDataReader-gränssnittet för att stödja databindning och för att hämta data med hjälp av metoden SelectCommand från System.Data-namnområdet för Microsoft .NET Framework-klassbiblioteket.
Hämta data från AdomdDataReader
Om du vill använda AdomdDataReader objektet för att hämta data följer du dessa steg:
Skapa en ny instans av objektet.
Om du vill skapa en ny instans av AdomdDataReader-klassen anropar du Execute- eller ExecuteReader-metoden på AdomdCommand-objektet.
Hämta data.
När kommandot kör frågan returnerar ADOMD.NET resultatet i resultatuppsättningsformatet , ett tabellformat som beskrivs i XML for Analysis-specifikationen, för att platta ut data för AdomdDataReader objektet. Ett tabellformat är ovanligt när du frågar efter analysdata med tanke på variabeldimensioniteten i sådana data.
ADOMD.NET lagrar dessa tabellresultat i nätverksbufferten på klienten tills du begär dem med någon av följande metoder:
Anropa Read-metoden för AdomdDataReader-objektet.
Metoden Read hämtar en rad från frågeresultatet. Du kan sedan skicka namnet eller ordningsreferensen för kolumnen till egenskapen Item för att få åtkomst till varje kolumn i den returnerade raden. Den första kolumnen i den aktuella raden heter till exempel ColumnName. Sedan returnerar antingen
reader[0].ToString()ellerreader["ColumnName"].ToString()innehållet i den första kolumnen i den aktuella raden.Anropa någon av de inskrivna åtkomstmetoderna.
Tillhandahåller AdomdDataReader en serie typbaserade åtkomstmetoder – metoder som gör att du kan komma åt kolumnvärden i deras ursprungliga datatyper. När du känner till den underliggande datatypen för ett kolumnvärde minskar en typbaserad åtkomstmetod mängden typkonvertering som krävs när kolumnvärdet hämtas och ger därmed högsta prestanda.
Några av de inskrivna accessormetoderna som är tillgängliga är GetDateTime, GetDoubleoch GetInt32. En fullständig lista över inskrivna åtkomstmetoder finns i AdomdDataReader.
Stäng läsaren.
Du bör alltid anropa Close metoden när du är klar med objektet AdomdDataReader . När en instans av ett AdomdDataReader objekt är öppet, används AdomdConnection uteslutande av det AdomdDataReader. Du kommer inte att kunna köra några kommandon på instansen AdomdConnection, vilket inkluderar att skapa en annan AdomdDataReader eller System.Xml.XmlReader, förrän du stänger den ursprungliga AdomdDataReader.
Exempel på hämtning av data från AdomdDataReader
Följande kodexempel itererar genom ett AdomdDataReader objekt och returnerar de två första värdena, som strängar, från varje rad.
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();
Hämtar metadata från AdomdDataReader
När en instans av ett AdomdDataReader-objekt är öppnad, kan du använda GetSchemaTable-metoden för att hämta schemainformation eller metadata om den aktuella postuppsättningen. GetSchemaTable returnerar ett DataTable-objekt som fylls i med schemainformationen för den aktuella postuppsättningen. DataTable innehåller en rad för varje kolumn i postuppsättningen. Varje kolumn i schematabellraden mappas till en egenskap för kolumnen som returneras i celluppsättningen, där ColumnName är namnet på egenskapen och värdet för kolumnen är värdet för egenskapen.
Exempel på hämtning av metadata från AdomdDataReader
I följande kodexempel skrivs schemainformationen för ett AdomdDataReader objekt ut.
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();
}
Hämtar flera resultatuppsättningar
Datautvinning stöder begreppet kapslade tabeller, som ADOMD.NET exponerar som kapslade rader. Om du vill hämta den kapslade raduppsättningen som är associerad med varje rad anropar GetDataReader du metoden.