複数のストアド プロシージャに対して 1 つのオブジェクトを作成するデータ アクセス レイヤーでは、さまざまな列セットを含むシナリオの処理が課題となる可能性があります。このような状況に対処するには、SqlDataReader オブジェクト内の列の存在を確認する方法を知ることが重要です。
効果的な解決策の 1 つは、フィールド数を反復処理し、列名の大文字と小文字を比較するデータ レコード拡張メソッドを利用することです。無神経に。このアプローチにより、パフォーマンスのオーバーヘッドと制御ロジックの例外処理が回避されます。
HasColumn メソッドを含む DataRecordExtensions クラスの例を次に示します。
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; } }
IDataRecord インターフェイスを拡張することで、便利に使用できます。このメソッドは列の存在を確認します。パフォーマンス上の理由から、制御ロジックまたは GetSchemaTable() に例外を使用することは避けてください。
以上がSqlDataReader で列の存在を効率的に確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。