【问题标题】:Advantages of using SQLDataReader over a reader that implements IDatareader?与实现 IDatareader 的阅读器相比,使用 SQLDataReader 的优势?
【发布时间】:2025-12-27 18:55:11
【问题描述】:

如果我使用 SQL Server >= 2005,使用 SQLDataReader 与仅实现 IDatareader 的阅读器相比有哪些优势?

SQLDatareader 是否只是有更多功能可供选择,还是使用 SQLDatareader 可以提高性能?

任何讨论此问题的文章将不胜感激。

谢谢!

克里斯

【问题讨论】:

    标签: sqldatareader idatareader


    【解决方案1】:

    首先让我纠正您的误解:如果您使用的是 SQL Server,并非每个 IDataReader 都能够从您的 MS SQL Server 读取数据

    在 .NET 环境中(我假设您的问题适用),有两个实现 IDataReader 的具体类可以访问 SQL Server。一个是 SQLDataReader,另一个是 OleDbDataReader。 OleDbDataReader 实际上依赖于OleDb protocol,它基本上是一个RDBMS 通信协议。

    在您的代码中使用 IDataReader 将(或多或少)确保您可以替换它背后的具体数据读取器(例如,让您能够切换数据库供应商。我不认识任何成功做到这一点的人)。

    对于访问 SQL Server,专用 SQLDataReader 根据 source,速度提高了 115%,因为它使用本机 sql 服务器协议(命名为管道/tcp/ip)。它还支持特殊的 SQL Server 功能,例如 MARS。

    【讨论】:

    • 谢谢,约翰内斯。为什么 SQLDataReader 应该更快?
    • 我已经更新了我的帖子,请见上文。不要犹豫,将其标记为答案 :-)
    【解决方案2】:

    .HasRows 属性是我能想到的唯一一个。 但这并不是真的必要。

    【讨论】: