Recupero di dati tramite AdomdDataReader
Durante il recupero dei dati analitici, AdomdDataReader l'oggetto offre un buon equilibrio tra overhead e interattività. L'oggetto recupera un flusso di dati bi flat di sola lettura AdomdDataReader e forward-only da un'origine dati analitica. Tale flusso privo di buffer consente alla logica procedurale di elaborare sequenzialmente risultati da un'origine dati analitici con notevole efficienza. Ciò rende la scelta ottimale quando si recuperano grandi quantità di dati a scopo di visualizzazione perché i dati non vengono AdomdDataReader memorizzati nella cache in memoria.
il può anche migliorare le prestazioni dell'applicazione recuperando i dati non appena sono disponibili, anziché attendere che i risultati completi della AdomdDataReader query siano restituiti. riduce AdomdDataReader inoltre l'overhead di sistema perché, per impostazione predefinita, questo lettore archivia in memoria solo una riga alla volta.
Il compromesso per le prestazioni ottimizzate è che l'oggetto fornisce meno informazioni sui dati recuperati AdomdDataReader rispetto ad altri metodi di recupero dati. L'oggetto non supporta un modello a oggetti di grandi dimensioni per la rappresentazione di dati o metadati, né consente funzionalità analitiche più complesse, ad esempio il AdomdDataReader writeback delle celle. Tuttavia, l'oggetto fornisce un set di metodi fortemente tipizzato per il recupero dei dati del set di celle e un metodo per il recupero dei metadati del set di celle AdomdDataReader in formato tabulare. Implementa inoltre l'interfaccia AdomdDataReader IDbDataReader per supportare il data binding e il recupero dei dati usando il metodo SelectCommand dallo spazio dei nomi System.Data della libreria di classi Microsoft .NET Framework.
Recupero di dati tramite AdomdDataReader
Per usare AdomdDataReader l'oggetto per recuperare i dati, seguire questa procedura:
Creare una nuova istanza dell'oggetto.
Per creare una nuova istanza della AdomdDataReader classe , chiamare il metodo o Execute ExecuteReader AdomdCommand dell'oggetto .
Recuperare i dati.
Quando il comando esegue la query, ADOMD.NET restituisce i risultati in formato set di risultati, un formato tabulare come descritto nella specifica XML for Analysis, per appiattire i dati per AdomdDataReader l'oggetto. Considerando le dimensioni variabili dei dati analitici, l'utilizzo di un formato tabulare è anomalo in caso di esecuzione di query su questo tipo di dati.
ADOMD.NET archivia tali risultati tabulari nel buffer di rete presente nel client fino a quando non vengono richiesti dall'utente tramite la chiamata a uno dei metodi seguenti:
Chiamare il metodo Read 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. Se ad esempio alla prima colonna della riga corrente è assegnato il nome ColumnName,
reader[0].ToString()oreader["ColumnName"].ToString()restituiranno il contenuto della prima colonna della riga corrente.Uno dei metodi tipizzati della funzione di accesso.
fornisce una serie di metodi delle funzioni di accesso tipi, ovvero metodi che AdomdDataReader consentono di accedere ai valori di colonna nei relativi tipi di dati nativi. Quando si conosce il tipo di dati sottostanti di un valore di colonna, un metodo tipizzato della funzione di accesso riduce la conversione dei tipi necessaria per il recupero del valore di colonna ottimizzando in questo modo le prestazioni.
Alcuni dei metodi delle funzioni di accesso tipi che sono disponibili includono GetDateTime GetDouble , e GetInt32 . Per un elenco completo dei metodi delle funzioni di accesso tipivate, vedere AdomdDataReader .
Chiudere il lettore.
È consigliabile chiamare sempre Close il metodo al termine dell'uso dell'oggetto AdomdDataReader . Mentre un'istanza di AdomdDataReader un oggetto è aperta, AdomdConnection l'oggetto viene utilizzato esclusivamente da tale oggetto AdomdDataReader . Non sarà possibile eseguire comandi nell'istanza di , inclusa la creazione di un altro oggetto AdomdConnection AdomdDataReader o System.Xml. XmlReader, fino a quando non si chiude l'oggetto AdomdDataReader originale.
Esempio di recupero di dati tramite AdomdDataReader
Nell'esempio di codice seguente viene illustrato come scorrere un oggetto e vengono restituiti i primi AdomdDataReader due valori, sotto forma di 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 tramite AdomdDataReader
Mentre un'istanza di un oggetto è aperta, è possibile recuperare informazioni sullo schema, o AdomdDataReader metadati, sul recordset corrente usando il GetSchemaTable metodo . GetSchemaTable restituisce un oggetto DataTable popolato con le informazioni sullo schema per il recordset corrente. Gli oggetti DataTable conterranno una riga per ogni colonna del recordset. Ogni colonna di una riga di tabella dello schema è mappata a una proprietà della colonna restituita nel set di celle, in cui ColumnName è il nome della proprietà e il valore della colonna è il valore della proprietà.
Esempio di recupero di metadati tramite 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
Nelle operazioni di data mining è supportato il concetto di tabelle nidificate, che ADOMD.NET espone come set di righe nidificati. Per recuperare il set di righe annidato associato a ogni riga, chiamare il GetDataReader metodo .