如果我使用 SQL Server >= 2005,使用 SQLDataReader 与仅实现 IDatareader 的阅读器相比有什么优势?
SQLDatareader 是否只是有更多功能可供选择,还是使用 SQLDatareader 可以提高性能?
任何讨论此问题的文章将不胜感激。
谢谢!
克里斯
如果我使用 SQL Server >= 2005,使用 SQLDataReader 与仅实现 IDatareader 的阅读器相比有什么优势?
SQLDatareader 是否只是有更多功能可供选择,还是使用 SQLDatareader 可以提高性能?
任何讨论此问题的文章将不胜感激。
谢谢!
克里斯
首先让我纠正您的误解:如果您使用的是 SQL Server,则不是每个 IDataReader 都能够从您的 MS SQL Server 读取数据
在 .NET 环境中(我假设您的问题适用),有两个具体的类实现了可以访问 SQL Server 的 IDataReader。一个是 SQLDataReader,另一个是 OleDbDataReader。OleDbDataReader 实际上依赖于OleDb 协议,它基本上是一个 RDBMS 通信协议。
在您的代码中使用 IDataReader 将(或多或少)确保您可以替换它背后的具体数据读取器(例如,让您能够切换数据库供应商。并不是说我认识任何成功做到这一点的人)。
对于访问 SQL Server,专用的 SQLDataReader的速度提高了 115% ,因为它使用本机 sql 服务器协议(命名为管道/tcp/ip)。它还支持特殊的 SQL Server 功能,例如 MARS。
.HasRows 属性是我能想到的唯一一个。但这并不是真的必要。