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

本文关键字:什么 获取 方法 IDataReader | 更新日期: 2023-09-27 18:29:56

从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.

其中一个比另一个好吗?它们中是否有性能缺陷?

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

在极少数情况下不应该使用列名。从技术上讲,列名被转换为索引,因此直接使用索引会稍微快一些。然而,与数据库调用本身相比,这一差距将相形见绌,因此它实际上无关紧要。而且——假设您已经将语义赋予了返回的列,并且没有实现某种通用数据处理器——使用索引会使您更有可能在未来随着查询中数据的更改而意外引入错误。

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

使用reader["FirstName"]调用reader.GetOrdinal("FirstName"),然后调用reader.GetValue(0)reader[0]只是在它的getter中调用reader.GetValue(0)