![](/img/trans.png)
[英]DataTable.Load() is taking too much time compared to SqlDataAdapter.Fill()
[英]SqlDataAdapter.Fill() vs DataTable.Load()
我来自这里的这个问题,但我有一个不同的案例。 我需要在DataTable
结果,并且我有两种可能的方法:
public static DataTable SelectDataTable(string query, string ConnectionString)
{
using (SqlConnection myConnection = new SqlConnection(ConnectionString))
{
using (SqlDataAdapter myDataAdapter = new SqlDataAdapter(query, myConnection))
{
DataTable dt = new DataTable();
myDataAdapter.Fill(dt);
return dt;
}
}
}
和
public static DataTable SelectDataTable(string query, string ConnectionString)
{
using (SqlConnection myConnection = new SqlConnection(ConnectionString))
{
using (SqlCommand cmd = new SqlCommand(query, myConnection))
{
myConnection.Open();
DataTable dt = new DataTable();
dt.Load(cmd.ExecuteReader(CommandBehavior.CloseConnection));
return dt;
}
}
}
所以我的问题是:两者之间有区别吗
SqlDataAdapter
+ Fill()
和SqlDataReader
+ DataTable
+ Load()
更喜欢哪种方法?
乔尔的回答非常详细,是什么让这个问题不重复
事实上,我没有使用SqlDataReader
所有提到的优点,我用它来填充 DataTable,这让我期待答案是这样的:它是一样的?! 不幸的是,很难猜测引擎盖下发生了什么。
除非您正在处理大数据,否则我不希望使用 dataReader 而不是 dataAdapter 会带来巨大的性能提升。
话虽如此, Pawel发布的链接有一篇相当不错的文章,解释了两者的差异和优势。
主要内容是阅读器用于阅读数据。 除了这些,他们什么都不做。
因为它们没有做太多其他的事情,所以它们的性能开销相对较低。
DataAdapters 将允许您做的比 Readers 多,但在您的情况下,听起来您除了读取记录之外不需要做任何事情。
重申一下,除非您正在处理大数据(如数十万/数百万行),否则我不希望使用 dataReader 带来的性能节省会非常明显。
只有您在使用自己的数据进行基准测试时才能确定这一点。
如果这消除了您对 DataAdapter 和 DataReader 之间差异的任何混淆,请告诉我们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.