Dr.*_*ail 5 c# sql sqldatareader sqldataadapter
我来自这里的这个问题,但我有一个不同的案例。我需要我的结果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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
和
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:两者之间有区别吗
SqlDataAdapter+Fill()
和
SqlDataReader+ DataTable+Load()
更喜欢哪种方法?
乔尔的回答非常详细,是什么让这个问题不重复
事实上,我并没有使用SqlDataReader我使用它来填充 DataTable 的所有提到的优点,这让我期待答案是这样的:它是一样的?!不幸的是,很难猜测引擎盖下发生了什么。
除非您正在处理大数据,否则我不希望使用 dataReader 而不是 dataAdapter 获得巨大的性能提升。
话虽如此, Pawel发布的链接有一篇相当不错的文章,解释了两者的差异和优点。
主要的要点是读者是用来阅读数据的。除此之外,他们什么也没做。
因为它们不做太多其他事情,所以它们的性能开销相对较低。
DataAdapter 将允许您做比 Readers 更多的事情,但就您而言,听起来除了读取记录之外您不需要做任何事情。
重申一下,除非您正在处理大数据(例如数十万/数百万行),否则我预计使用 dataReader 所节省的性能不会非常明显。
只有您在使用自己的数据进行基准测试时才能确定这一点。
如果这能消除您对 DataAdapter 和 DataReader 之间差异的任何困惑,请告诉我们。
| 归档时间: |
|
| 查看次数: |
1448 次 |
| 最近记录: |