有多种方法可以从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.
其中一个比另一个好吗?它们中的任何一个都有性能缺陷吗?
答案 0 :(得分:2)
reader.GetValue(0)
是最快的方法。
使用reader["FirstName"]
来电reader.GetOrdinal("FirstName")
,然后拨打reader.GetValue(0)
。 reader[0]
只需在其中吸取reader.GetValue(0)
。
答案 1 :(得分:2)
在您不应使用列名的情况非常少。从技术上讲,列名称将转换为索引,因此直接使用索引将略微加快。但是,这个边际将与数据库调用本身相形见绌,所以它实际上并不重要。并且 - 假设您已将语义意义归因于返回的列,并且未实现某种通用数据处理器 - 使用索引会更有可能在将来随着查询中的数据更改而意外引入错误