2011-02-03 21 views
1

これは例外をスローし、フィールドが存在しない場合:reader.GetOrdinal( "FieldName")が例外をスローするのはなぜですか?

reader.IsDbNull(reader.GetOrdinal("FieldName")) =>強打

はなぜ戻らない-1?

+1

あなたのロジックに従って...なぜ例外が必要なのですか? –

+0

reader.GetSchemaTable()。Columns.IndexOf( "FieldName")のように-1を返さないのはなぜですか? btw。 IndexOfは常に-1 LOL ... – Elisabeth

+0

:)を返しますが、ここでは通常、この値をリーダーの他のメソッドに渡します。これを処理するロジックがより多くなります。 –

答えて

0

私はここで推測しようとします。

この方法のための一般的なパターンは、列の名前で毎回検索を行うよりも高速である与えられた順序でメソッド)のカラム名にでGetOrdinalを呼び出してから、のgetXXX(呼び出すことです。

ここで例外の場合、私たちは速く失敗し、無視できません。例外として、存在しない列を見つけようとします。そして、序数を指定してフィールドを検索しようとします(この場合、-1をチェックするのは非常に簡単です)。ここでのみ、何かが間違っていたことがわかりますいくつかのステップを前に(あまりにも多くの前にステップがあります)。

関連する問題