3 回答
TA贡献1802条经验 获得超4个赞
SqlDataReader:
将连接保持打开状态,直到完成操作(不要忘记关闭它!)。
通常只能迭代一次
对于更新回数据库没有太大用处
另一方面,它:
一次只在内存中记录一个记录,而不是整个结果集(这可能很大)
在那一次迭代中速度最快
使您可以更快地开始处理结果(一旦第一条记录可用)
SqlDataAdapter / DataSet
让您在连接完成后立即关闭连接,甚至可以自动为您关闭连接
所有结果都在内存中可用
您可以根据需要进行多次遍历,甚至可以按索引查找特定记录
有一些内置的功能可以更新回数据库
以:
很多更高的内存使用
您等到所有数据加载完毕后再使用其中任何一个
因此,实际上这取决于您的工作,但是在需要仅由数据集支持的内容之前,我倾向于使用DataReader。SqlDataReader非常适合绑定到只读网格的常见数据访问情况。
有关更多信息,请参阅正式的Microsoft文档。
TA贡献1893条经验 获得超10个赞
SqlDataAdapter通常用于填充DataSet或DataTable,因此在连接关闭后您将有权访问数据(断开访问)。
SqlDataReader是一个仅前进和连接的快速游标,通常比填充DataSet / DataTable更快。
此外,使用SqlDataReader,您一次可以处理一条记录,而不会在内存中保存任何数据。显然,使用DataTable或DataSet确实有内存分配开销。
如果您不需要将数据保留在内存中,那么仅用于呈现内容,请使用SqlDataReader。如果要以断开连接的方式处理数据,请选择DataAdapter填充DataSet或DataTable。
- 3 回答
- 0 关注
- 651 浏览
添加回答
举报