Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Lors de la récupération de données analytiques, l’objet AdomdDataReader fournit un bon équilibre entre la surcharge et l’interactivité. L’objet AdomdDataReader récupère un flux de données aplati en lecture seule et en lecture avant uniquement à partir d’une source de données analytique. Ce flux de données non tamponné permet à la logique procédurale de traiter efficacement les résultats d’une source de données analytique de manière séquentielle. Cela fait de AdomdDataReader un bon choix pour récupérer de grandes quantités de données à des fins d'affichage, car les données ne sont pas mises en cache en mémoire.
Cela AdomdDataReader peut également augmenter les performances de l’application en récupérant les données dès qu’elles sont disponibles, au lieu d’attendre que les résultats complets de la requête soient retournés. Cela AdomdDataReader réduit également la surcharge système, car, par défaut, ce lecteur stocke une seule ligne à la fois en mémoire.
Le compromis pour les performances optimisées est que l’objet AdomdDataReader fournit moins d’informations sur les données récupérées que d’autres méthodes de récupération de données. L’objet AdomdDataReader ne prend pas en charge un modèle volumineux pour représenter des données ou des métadonnées, ni ne permet des fonctionnalités analytiques plus complexes, telles que la réécriture des cellules. Toutefois, l’objet AdomdDataReader fournit un ensemble de méthodes fortement typées pour récupérer des données d’ensemble de cellules et une méthode pour récupérer les métadonnées de l’ensemble de cellules dans un format tabulaire. En outre, AdomdDataReader implémente l’interface IDbDataReader pour prendre en charge la liaison de données et récupérer des données à l’aide de la méthode SelectCommand , à partir de l’espace de noms System.Data de la bibliothèque de classes Microsoft .NET Framework.
Récupération de données à partir d’AdomdDataReader
Pour utiliser l’objet AdomdDataReader pour récupérer des données, procédez comme suit :
Créez une instance de l’objet.
Pour créer une nouvelle instance de la classe AdomdDataReader, vous appelez la méthode Execute ou ExecuteReader de l’objet AdomdCommand.
Récupérer des données.
Lorsque la commande exécute la requête, ADOMD.NET retourne les résultats au format Resultset , un format tabulaire, comme décrit dans la spécification XML for Analysis, pour aplatir les données de l’objet AdomdDataReader . Un format tabulaire est inhabituel lors de l’interrogation de données analytiques en tenant compte de la dimensionnalité variable dans ces données.
ADOMD.NET stocke ces résultats tabulaires dans la mémoire tampon réseau sur le client jusqu’à ce que vous les demandiez à l’aide de l’une des méthodes suivantes :
Appelez la Read méthode de l’objet AdomdDataReader .
La Read méthode obtient une ligne à partir des résultats de la requête. Vous pouvez ensuite passer le nom ou la référence ordinale de la colonne à la propriété Item pour accéder à chaque colonne de la ligne retournée. Par exemple, la première colonne de la ligne active est nommée ColumnName. Ensuite, soit
reader[0].ToString()soitreader["ColumnName"].ToString()retournera le contenu de la première colonne de la ligne actuelle.Appelez l’une des méthodes d’accesseur typées.
Les AdomdDataReader fournissent une série de méthodes d'accesseur typées qui vous permettent d'accéder aux valeurs de colonne dans leurs types de données natifs. Lorsque vous connaissez le type de données sous-jacent d’une valeur de colonne, une méthode d’accesseur typée réduit la quantité de conversion de type requise lors de la récupération de la valeur de colonne, et fournit ainsi les performances les plus élevées.
Certaines des méthodes d’accesseur typées disponibles incluent GetDateTime, GetDouble, et GetInt32. Pour avoir la liste complète des méthodes d’accesseur typées, consultez AdomdDataReader.
Fermez le lecteur.
Vous devez toujours appeler la Close méthode lorsque vous avez terminé d’utiliser l’objet AdomdDataReader . Alors qu'une instance d'un AdomdDataReader objet est ouvert, le AdomdConnection est utilisé exclusivement par ce AdomdDataReader. Vous ne pourrez pas exécuter de commandes sur l’instance AdomdConnection, y compris créer un autre AdomdDataReader ou System.Xml.XmlReader, jusqu’à ce que vous fermiez l’original AdomdDataReader.
Exemple de récupération de données à partir d’AdomdDataReader
L’exemple de code suivant itère dans un AdomdDataReader objet et retourne les deux premières valeurs, sous forme de chaînes, de chaque ligne.
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();
Récupération des métadonnées à partir d’AdomdDataReader
Pendant qu’une instance d’un AdomdDataReader objet est ouverte, vous pouvez récupérer des informations de schéma ou des métadonnées sur le jeu d’enregistrements actif à l’aide de la GetSchemaTable méthode. GetSchemaTable retourne un objet DataTable rempli avec les informations de schéma pour le jeu d’enregistrements actif. DataTable contient une ligne pour chaque colonne du jeu d’enregistrements. Chaque colonne de la ligne de la table de schéma est mappée à une propriété de la colonne retournée dans l’ensemble de cellules, où ColumnName est le nom de la propriété et la valeur de la colonne est la valeur de la propriété.
Exemple de récupération des métadonnées à partir d’AdomdDataReader
L’exemple de code suivant écrit les informations de schéma d’un AdomdDataReader objet.
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();
}
Récupération de plusieurs jeux de résultats
L’exploration de données prend en charge le concept de tables imbriquées, que ADOMD.NET expose en tant qu’ensembles de lignes imbriquées. Pour récupérer l’ensemble de lignes imbriqué associé à chaque ligne, vous appelez la GetDataReader méthode.