Mathieu Kempé
Optimisation ADO.NET, GetOrdinal
Optimiser votre code ADO.NET grâce à la méthode GetOrdinal.
Par Mathieu Kempé publié le 31/12/2004 à 14:07, lu 11213 fois,
Lorsqu'à l'aide d'une boucle vous parcourez un jeu de données contenues dans un datareader ou une datatable il est plus compréhensible d'utiliser les noms des colonnes en base plutôt que l'index.
using System;
using System.Data;
using System.Data.SqlClient;

namespace GetOrdinal
{
    class ClassTest
    {
        static void Main(string[] args)
        {
            SqlConnection conn = null;
            SqlCommand command = null;
            SqlDataReader dr =  null;
            try
            {
                conn = new SqlConnection("XXXXXXXXXXXXXXXXXXXXXXX");
                conn.Open();    
        
                command = new SqlCommand("SELECT Nom, Idclient from Client",conn);
                dr = command.ExecuteReader();

                while(dr.Read())
                    Console.WriteLine(dr["Nom"]);
            
            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {                
                dr.Close();
                command.Dispose();
                conn.Close();
            }
        }
    }
}
Une recherche basée sur l'index d'une colonne étant plus efficace qu'une recherche se basant sur le nom.
Une manière plus efficace lorsqu'il s'agit de parcourir un nombre de donnée importante consiste à récupérer la position de la colonne par son nom grâce à la méthode Getordinal.

Ce qui donne le code suivant :
int ordColumnName = dr.GetOrdinal("Nom");

while(dr.Read())
    Console.WriteLine(dr[ordColumnName]);
Ressource MSDN.
 
» Démarrer une discussion