1

IDataReaderから値を取得する方法は複数あります。

reader["FirstName"]; // by column name array style.
reader[0];           // by index array style.
reader.GetValue(0);  // by index method style.
reader.GetString(0); // by index using specific method.

それらの1つは他よりも優れていますか?それらのいずれかにパフォーマンス上の欠点がありますか?

4

2 に答える 2

2

reader.GetValue(0)最速の方法です。

reader["FirstName"]呼び出しを使用しreader.GetOrdinal("FirstName")てから呼び出しますreader.GetValue(0)。ゲッターをreader[0]呼び出すだけです。reader.GetValue(0)

于 2012-04-04T16:01:52.383 に答える
2

列名を使用してはいけない状況はほとんどありません。技術的には、列名はインデックスに変換されるため、インデックスを直接使用するとわずかに高速になります。ただし、そのマージンはデータベース呼び出し自体に比べて小さいため、実際には重要ではありません。また、返される列にセマンティックな意味があると仮定し、ある種の汎用データ プロセッサを実装していないと仮定すると、インデックスを使用すると、クエリ内のデータが変更されたときに、将来誤ってバグが発生する可能性が高くなります。 .

于 2012-04-04T16:43:34.107 に答える