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; } }
この拡張メソッドを使用すると、値にアクセスする前に列の存在を簡単に確認できます。このアプローチは、パフォーマンスの低下や例外の信頼性の低さの性質を回避できるため、例外や GetSchemaTable() メソッドに依存するよりも優れた方法であると考えられています。
フィールドをループするとわずかなパフォーマンスのオーバーヘッドが発生する可能性がありますが、結果をキャッシュすると、結果がキャッシュされる可能性があります。ループ内で頻繁に列チェックが行われるシナリオでは、この影響が軽減されます。
以上がC# SqlDataReader で列の存在を効率的に確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。