Maison >développement back-end >C++ >Mon SqlDataReader contient-il cette colonne ?

Mon SqlDataReader contient-il cette colonne ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-31 12:19:10906parcourir

Does My SqlDataReader Contain This Column?

Comment vérifier l'existence d'un nom de colonne dans un SqlDataReader

Dans les couches d'accès aux données, la création d'une méthode cohérente pour gérer différentes procédures stockées peut être difficile, en particulier lorsque vous travaillez avec des colonnes qui ne sont pas partagées dans toutes les procédures. Pour surmonter ce problème en C#, une solution efficace consiste à vérifier si une colonne spécifique existe au sein d'un objet SqlDataReader.

Pour ce faire, une méthode d'extension peut être implémentée :

public static class DataRecordExtensions
{
    public static bool HasColumn(this IDataRecord dr, string columnName)
    {
        for (int i = 0; i < dr.FieldCount; i++)
        {
            if (dr.GetName(i).Equals(columnName, StringComparison.InvariantCultureIgnoreCase))
                return true;
        }
        return false;
    }
}

Ceci La méthode parcourt les champs de SqlDataReader et compare les noms avec le nom de colonne fourni, sans tenir compte de la casse. Si la colonne est trouvée, elle renvoie vrai. Cette approche est préférable à l'utilisation d'exceptions pour la logique de contrôle, ce qui peut avoir un impact sur les performances et entraîner des faux positifs dans la gestion des exceptions.

De plus, bien que l'utilisation de GetSchemaTable() soit une autre option, elle n'est pas entièrement prise en charge et présente une surcharge de performances. . Par conséquent, parcourir les champs est une méthode fiable et performante pour vérifier l’existence d’une colonne dans un objet SqlDataReader.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn