哪个会更快.
1)循环datareader并基于填充的数据表创建自定义行和列
2)或者创建一个dataAdapter对象并且只是(填充)一个数据表.
在动态创建数据表时,数据加载器的性能是否仍然适用?
假设您确实希望从数据库返回所有数据,那么在数据库和网络上花费的时间几乎肯定会使在进程中填充内存中的数据结构所花费的时间相形见绌.
是的,在某些情况下,您可以通过使用DataReader进行小额保存 - 特别是如果您想要流式传输数据可能会有用 - 但如果您确实需要它,那么我会坚持使用最简单的代码.如果您认为DataSet群体导致严重的性能问题,请对其进行概要分析,然后尝试对其进行改进.
DataAdapter在引擎盖下使用DataReader,因此您的体验可能会相同.
DataAdapter的好处是可以删除大量需要维护的代码.
这场辩论有点宗教问题,所以一定要四处寻找并确定哪种方式最适合您的情况:
http://blogs.msdn.com/memilavi/archive/2008/02/18/datareader-vs-dataset-the-real-question.aspx
http://xcskiwinn.org/community/blogs/panmanphil/archive/2004/09/21/281.aspx
http://weblogs.asp.net/joelevi/archive/2008/02/12/asp-net-datareader-vs-dataset.aspx
http://weblogs.asp.net/dreilly/archive/2003/09/27/29411.aspx
您的选项#1会慢一些.但是,有一种更好的方法可以将datareader转换为数据表,而不是手动添加自定义行:
DataTable dt = new DataTable(); using (SqlConnection conn = GetOpenSqlConnection()) using (SqlCommand cmd = new SqlCommand("SQL Query here", conn) using (IDataReader rdr = cmd.ExecuteReader()) { dt.Load(rdr); }
我无法评论这与使用之间的区别.Fill()
.