SqlDataReader:
- 在您完成连接之前将其保持打开状态(不要忘记关闭它!)。
- 通常只能迭代一次
- 对于更新回数据库没有太大用处
另一方面,它:
- 一次仅在内存中记录一个记录,而不是整个结果集(可以是 HUGE )
- 在那一次迭代中速度最快
- 使您可以更快地开始处理结果(一旦第一条记录可用)。对于某些查询类型,这也可能是很大的事情。
SqlDataAdapter / DataSet
- 让您在连接完成后立即关闭连接,甚至可以自动为您关闭连接
- 所有结果都在内存中可用
- 您可以根据需要进行多次遍历,甚至可以按索引查找特定记录
- 有一些内置的功能可以更新回数据库
以:
- 很多 更高的内存使用
- 您等到所有数据加载完毕后再使用任何数据
因此,实际上这取决于您的工作,但是在需要仅由数据集支持的内容之前,我倾向于使用DataReader。SqlDataReader非常适合绑定到只读网格的常见数据访问情况。
有关更多信息,请参阅正式的Microsoft文档。



