Partager via


Récupération de données à l'aide d'AdomdDataReader

Lorsque vous récupérez des données analytiques, l’objet offre un bon équilibre entre la charge et l' AdomdDataReader interactivité. L' AdomdDataReader objet récupère un flux de données aplati, avant uniquement et en lecture seule à partir d’une source de données analytiques. Ce flux de données, qui n'est pas mis en mémoire tampon, permet à la logique procédurale de traiter de façon séquentielle et efficace les résultats d'une source de données analytiques. Cela fait un bon choix lors de la AdomdDataReader récupération de grandes quantités de données à des fins d’affichage, car les données ne sont pas mises en cache dans la mémoire.

Peut également améliorer les AdomdDataReader performances de l’application en extrayant 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. Le réduit également la surcharge du AdomdDataReader système car, par défaut, ce lecteur ne stocke qu’une seule ligne à la fois en mémoire.

Le compromis pour des performances optimisées est que l’objet fournit moins d’informations sur les AdomdDataReader données récupérées que d’autres méthodes de récupération de données. L' AdomdDataReader objet ne prend pas en charge un modèle objet volumineux pour représenter des données ou des métadonnées, et ce modèle objet n’autorise pas non plus les fonctionnalités analytiques plus complexes comme l’écriture différée des cellules. Toutefois, l' AdomdDataReader objet fournit un ensemble de méthodes fortement typées pour récupérer les données de l’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 la récupération de 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' AdomdDataReader objet pour récupérer des données, procédez comme suit :

  1. Créez une nouvelle instance de l'objet.

    Pour créer une nouvelle instance de la AdomdDataReader classe, vous appelez la Execute méthode ou ExecuteReader de l' AdomdCommand objet.

  2. Récupérer des données.

    Au fur et à mesure que la commande exécute la requête, ADOMD.NET retourne les résultats dans le format ResultSet , un format tabulaire tel que décrit dans la spécification XML for Analysis, pour aplatir les données de l' AdomdDataReader objet. Le format tabulaire est inhabituel en matière d'interrogation de données analytiques compte tenu de leur dimensionnalité variable.

    ADOMD.NET stocke ces résultats tabulaires dans le tampon réseau du client jusqu'à ce que vous les demandiez en utilisant l'une des méthodes suivantes :

    • Appelez la méthode Read 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 actuelle est nommée ColumnName. Ensuite, reader[0].ToString() ou reader["ColumnName"].ToString() retourne le contenu de la première colonne dans la ligne actuelle.

    • Appel de l'une des méthodes d'accesseur typées.

      Le AdomdDataReader fournit une série de méthodes d’accesseur typées, c’est-à-dire des méthodes qui vous permettent d’accéder aux valeurs de colonne dans leurs types de données natifs. Dans la mesure où vous connaissez le type de données sous-jacent d'une valeur de colonne, une méthode d'accesseur typée diminue le nombre de conversions de type nécessaires au moment de récupérer la valeur de colonne et, de ce fait, procure de meilleures performances.

      Parmi les méthodes d’accesseur typées disponibles, citons notamment GetDateTime , GetDouble et GetInt32 . Pour obtenir la liste complète des méthodes d’accesseur typées, consultez AdomdDataReader .

  3. Fermez le lecteur.

    Vous devez toujours appeler la Close méthode une fois que vous avez fini d’utiliser l' AdomdDataReader objet. Alors qu’une instance d’un AdomdDataReader objet est ouverte, le AdomdConnection est utilisé exclusivement par ce AdomdDataReader . Vous ne pourrez pas exécuter de commandes sur l’instance du AdomdConnection , notamment créer une 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 au sein d’un AdomdDataReader objet et retourne les deux premières valeurs, sous forme de chaînes, à partir 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 de métadonnées à partir d'AdomdDataReader

Alors qu’une instance d’un AdomdDataReader objet est ouverte, vous pouvez récupérer des informations de schéma, ou métadonnées, sur le jeu d’enregistrements actuel à l’aide de la GetSchemaTable méthode. GetSchemaTable retourne un objet DataTable qui est rempli avec les informations de schéma pour le Recordset actuel. L’objet DataTable contiendra une ligne pour chaque colonne du jeu d’enregistrements. Chaque colonne de la ligne de table de schéma correspond à une propriété de la colonne retournée dans l’ensemble de cellules, où ColumnName représente le nom de la propriété et la valeur de la colonne correspond à la valeur de la propriété.

Exemple de récupération de 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 ensembles de résultats

L'exploration de données prend en charge le concept de tables imbriquées, qu'ADOMD.NET présente sous forme d'ensembles de lignes imbriqués. Pour récupérer l’ensemble de lignes imbriqué associé à chaque ligne, vous appelez la GetDataReader méthode.