So überprüfen Sie das Vorhandensein von Spaltennamen in einem SqlDataReader
In Datenzugriffsebenen kann die Erstellung einer konsistenten Methode zur Handhabung verschiedener gespeicherter Prozeduren hilfreich sein Dies ist eine Herausforderung, insbesondere wenn mit Spalten gearbeitet wird, die nicht von allen Prozeduren gemeinsam genutzt werden. Um dieses Problem in C# zu lösen, besteht eine wirksame Lösung darin, zu überprüfen, ob eine bestimmte Spalte in einem SqlDataReader-Objekt vorhanden ist.
Um dies zu erreichen, kann eine Erweiterungsmethode implementiert werden:
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; } }
This Die Methode durchläuft die Felder des SqlDataReader und vergleicht die Namen mit dem angegebenen Spaltennamen, wobei die Groß-/Kleinschreibung außer Acht gelassen wird. Wenn die Spalte gefunden wird, wird true zurückgegeben. Dieser Ansatz wird der Verwendung von Ausnahmen für die Steuerlogik vorgezogen, da dies Auswirkungen auf die Leistung haben und zu Fehlalarmen bei der Ausnahmebehandlung führen kann.
Außerdem ist die Verwendung von GetSchemaTable() zwar eine weitere Option, wird jedoch nicht vollständig unterstützt und führt zu Leistungseinbußen . Daher ist das Durchlaufen der Felder eine zuverlässige und leistungsstarke Methode zum Überprüfen der Spaltenexistenz in einem SqlDataReader-Objekt.
Das obige ist der detaillierte Inhalt vonEnthält mein SqlDataReader diese Spalte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!