【问题标题】:SqlDataAdapter.Fill() vs DataTable.Load()SqlDataAdapter.Fill() 与 DataTable.Load()
【发布时间】:2019-07-29 05:33:39
【问题描述】:

我来自this 的问题,但我有不同的情况。我需要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 的所有这些优点,我用它来填充数据表,这让我期待答案是:一样吗?!不幸的是,很难猜测引擎盖下发生了什么。

【问题讨论】:

  • 乔尔的回答非常详细,是什么让这个问题不重复?
  • 你可以找到-Here is the answerdr和da的区别

标签: c# sql sqldatareader sqldataadapter


【解决方案1】:

除非您正在处理大数据,否则我不希望使用 dataReader 而非 dataAdapter 获得巨大的性能提升。

话虽如此,发布的链接Pawel 有一个pretty decent write-up 解释两者的区别和优势。

主要的收获是阅读器是用来阅读数据的。除了这些,他们什么都不做。

因为它们没有做太多其他事情,所以它们的性能开销相对较低。

DataAdapters 将允许您做比 Readers 更多的事情,但在您的情况下,听起来您除了读取记录之外不需要做任何事情。

重申一下,除非您正在处理大数据(例如数十万/数百万行),否则我不认为使用 dataReader 所节省的性能会非常显着。

只有您在使用自己的数据进行基准测试时才能确定。

如果这能消除您对 DataAdapter 和 DataReader 之间差异的任何困惑,请告诉我们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    • 2012-03-26
    • 2012-08-30
    相关资源
    最近更新 更多