Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Quando si recuperano dati analitici, l'oggetto AdomdDataReader offre un buon equilibrio tra overhead e interattività. L'oggetto AdomdDataReader recupera un flusso di dati appianato, di sola lettura e forward-only da un'origine dati analitica. Questo flusso di dati senza buffer consente alla logica procedurale di elaborare in modo efficiente i risultati da un'origine dati analitica in sequenza. Ciò rende la AdomdDataReader scelta ottimale quando si recuperano grandi quantità di dati a scopo di visualizzazione perché i dati non vengono memorizzati nella cache in memoria.
AdomdDataReader può anche migliorare le prestazioni dell'applicazione recuperando i dati non appena sono disponibili, anziché attendere che vengano restituiti i risultati completi della query. AdomdDataReader riduce anche l'overhead di sistema perché, per impostazione predefinita, questo lettore archivia una sola riga alla volta in memoria.
Il compromesso per le prestazioni ottimizzate è che l'oggetto AdomdDataReader fornisce meno informazioni sui dati recuperati rispetto ad altri metodi di recupero dati. L'oggetto AdomdDataReader non supporta un modello a oggetti di grandi dimensioni per la rappresentazione di dati o metadati, né questo modello a oggetti consente funzionalità analitiche più complesse, ad esempio il writeback delle celle. Tuttavia, l'oggetto AdomdDataReader fornisce un set di metodi fortemente tipizzato per il recupero di dati del set di celle e un metodo per il recupero dei metadati del set di celle in un formato tabulare. Implementa inoltre AdomdDataReader l'interfaccia IDbDataReader per supportare il data binding e per il recupero dei dati tramite il metodo SelectCommand dallo spazio dei nomi System.Data della libreria di classi di Microsoft .NET Framework.
Recupero di dati da AdomdDataReader
Per usare l'oggetto AdomdDataReader per recuperare i dati, seguire questa procedura:
Creare una nuova istanza dell'oggetto .
Per creare una nuova istanza della classe AdomdDataReader, chiamare il metodo Execute o il metodo ExecuteReader dell'oggetto AdomdCommand.
Recuperare i dati.
Quando il comando esegue la query, ADOMD.NET restituisce i risultati nel formato Resultset, un formato tabulare, come descritto nella specifica XML per l'Analysis, per appiattire i dati per l'oggetto AdomdDataReader. Un formato tabulare è insolito quando si eseguono query sui dati analitici considerando la dimensionalità variabile in tali dati.
ADOMD.NET archivia questi risultati tabulari nel buffer di rete nel client fino a quando non vengono richiesti usando uno dei metodi seguenti:
Chiamare il Read metodo dell'oggetto AdomdDataReader .
Il Read metodo ottiene una riga dai risultati della query. È quindi possibile passare il nome o il riferimento ordinale della colonna alla proprietà Item per accedere a ogni colonna della riga restituita. Ad esempio, la prima colonna della riga corrente è denominata ColumnName. Quindi,
reader[0].ToString()oreader["ColumnName"].ToString()restituirà il contenuto della prima colonna nella riga corrente.Chiamare uno dei metodi di accesso tipizzati.
AdomdDataReader fornisce una serie di metodi di accesso tipizzati, che consentono di accedere ai valori delle colonne nei loro tipi di dati nativi. Quando si conosce il tipo di dati sottostante di un valore di colonna, un metodo di accesso tipizzato riduce la quantità di conversione del tipo necessaria durante il recupero del valore della colonna e, di conseguenza, offre prestazioni ottimali.
Alcuni dei metodi della funzione di accesso tipizzata disponibili includono GetDateTime, GetDouble, e GetInt32. Per un elenco completo dei metodi di accesso tipizzati, vedere AdomdDataReader.
Chiudere il lettore.
È consigliabile chiamare sempre il Close metodo al termine dell'utilizzo dell'oggetto AdomdDataReader . Mentre un'istanza di un oggetto AdomdDataReader è aperta, l'AdomdConnection viene utilizzato esclusivamente da tale AdomdDataReader. Non sarà possibile eseguire comandi nell'istanza di AdomdConnection, inclusa la creazione di un altro oggetto AdomdDataReader o System.Xml.XmlReader, fino a quando non si chiude l'originale AdomdDataReader.
Esempio di recupero di dati da AdomdDataReader
Nell'esempio di codice seguente viene eseguita l'iterazione di un AdomdDataReader oggetto e vengono restituiti i primi due valori, come stringhe, da ogni riga.
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();
Recupero di metadati da AdomdDataReader
Mentre un'istanza di un AdomdDataReader oggetto è aperta, è possibile recuperare informazioni sullo schema o metadati relativi al recordset corrente usando il GetSchemaTable metodo . GetSchemaTable restituisce un oggetto DataTable popolato con le informazioni sullo schema per il recordset corrente. DataTable conterrà una riga per ogni colonna del recordset. Ogni colonna della riga della tabella dello schema viene mappata a una proprietà della colonna restituita nel set di celle, dove ColumnName è il nome della proprietà e il valore della colonna è il valore della proprietà .
Esempio di recupero di metadati da AdomdDataReader
L'esempio di codice seguente scrive le informazioni sullo schema per un AdomdDataReader oggetto .
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();
}
Recupero di più set di risultati
Il data mining supporta il concetto di tabelle nidificate, che ADOMD.NET espone come insiemi di righe nidificate. Per recuperare il set di righe annidato associato a ogni riga, chiamare il GetDataReader metodo .