使用特定方法从IDataReader获取价值有什么好处吗?

时间:2012-04-04 15:44:09

标签: c# database

有多种方法可以从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.

其中一个比另一个好吗?它们中的任何一个都有性能缺陷吗?

2 个答案:

答案 0 :(得分:2)

reader.GetValue(0)是最快的方法。

使用reader["FirstName"]来电reader.GetOrdinal("FirstName"),然后拨打reader.GetValue(0)reader[0]只需在其中吸取reader.GetValue(0)

答案 1 :(得分:2)

在您不应使用列名的情况非常少。从技术上讲,列名称将转换为索引,因此直接使用索引将略微加快。但是,这个边际将与数据库调用本身相形见绌,所以它实际上并不重要。并且 - 假设您已将语义意义归因于返回的列,并且未实现某种通用数据处理器 - 使用索引会更有可能在将来随着查询中的数据更改而意外引入错误