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.

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

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 回答