SqlDataReader で列名の存在を確認する方法
データ アクセス レイヤーでは、さまざまなストアド プロシージャを処理するための一貫したメソッドを作成できます。特に、すべてのプロシージャ間で共有されていない列を操作する場合は困難です。 C# でこの問題を解決する効果的な解決策は、SqlDataReader オブジェクト内に特定の列が存在するかどうかを確認することです。
これを実現するには、拡張メソッドを実装できます。
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; } }
これメソッドは、SqlDataReader のフィールドを反復処理し、大文字と小文字を区別せずに名前を指定された列名と比較します。列が見つかった場合は true を返します。このアプローチは、パフォーマンスに影響を与え、例外処理で誤検知が発生する可能性がある制御ロジックの例外を使用するよりも推奨されます。
また、GetSchemaTable() の使用も別のオプションですが、完全にはサポートされておらず、パフォーマンスのオーバーヘッドが発生します。 。したがって、フィールドをループすることは、SqlDataReader オブジェクト内の列の存在を確認するための信頼性が高く、パフォーマンスの高い方法です。
以上が私の SqlDataReader にはこの列が含まれていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。